You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何替换字符串部分内容?高校作业需求实现问询

How to Implement Two-Step String Replacement for Your Assignment

Hey there! Great job getting started on your assignment—you’ve already nailed the core idea of string manipulation. Let’s clean up your code and add the second replacement step properly, while making it more flexible than hardcoding positions.

First, Let’s Fix the Initial Code’s Minor Issues

Your current code uses hardcoded indices (like 27, 28) to insert/replace text. That works for your specific string now, but if you ever change the template string later, those numbers will break. Instead, we can use the std::string::find() method to locate the "XX" placeholder dynamically. We also don’t need two separate test strings—we can reuse a single modified string or keep the original template handy.

Complete Solution Code

Here’s a refined version that meets both your requirements:

#include <iostream>
#include <string>

int main() {
    // Keep the original template string so we can reference it easily
    const std::string templateStr = "Do you know who loves C++, XX does!";
    std::string modifiedStr = templateStr;
    std::string firstName, secondName;

    // Step 1: Replace XX with the first name
    std::cout << "Please enter a name: " << std::endl;
    std::getline(std::cin, firstName);
    
    // Find the position of "XX" in the string
    size_t xxPosition = modifiedStr.find("XX");
    if (xxPosition != std::string::npos) {
        // Replace "XX" with the first name
        modifiedStr.replace(xxPosition, 2, firstName);
        std::cout << "After first replacement: " << modifiedStr << std::endl;
    } else {
        std::cout << "Placeholder 'XX' not found in the template string!" << std::endl;
        return 1;
    }

    // Step 2: Replace the first name with the second name
    std::cout << "\nPlease enter another name: " << std::endl;
    std::getline(std::cin, secondName);
    
    // Find the position of the first name we just inserted
    size_t firstNamePosition = modifiedStr.find(firstName);
    if (firstNamePosition != std::string::npos) {
        // Replace the first name with the second one
        modifiedStr.replace(firstNamePosition, firstName.length(), secondName);
        std::cout << "After second replacement: " << modifiedStr << std::endl;
    } else {
        std::cout << "First name not found in the modified string!" << std::endl;
        return 1;
    }

    return 0;
}

Key Improvements & Explanations

  • Dynamic Placeholder Search: Using find("XX") lets us locate the placeholder no matter where it is in the string, instead of relying on fixed indices.
  • Error Checking: We added checks to make sure the placeholder/first name is actually found before trying to replace it—this makes the code more robust.
  • Cleaner Variable Usage: We only keep one modified string and the original template, reducing unnecessary duplication.
  • Clear Step Separation: The code explicitly splits the two tasks, making it easy to follow and modify later.

How It Works

  1. First, we take the user’s first name and replace the "XX" placeholder in the template string.
  2. Then, we take the second name, find where the first name was inserted, and replace it with the new name.

This approach is flexible, easy to read, and meets all your assignment requirements.

内容的提问来源于stack exchange,提问作者LuciellePenguin9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:45:47