试图替换C++字符串中的字符,完全被卡住了

Trying to replace characters in C++ Strings, completely stuck

本文关键字:字符 替换 C++ 字符串      更新时间:2023-10-16

我是一个新手,在天气好的时候,我试图输入几个字符串,然后用字母"x"只替换其中的几个字符串,以便在它们重新显示在屏幕上时进行审查。我知道我的问题很简单,但我太困了,我需要一些帮助。我四处寻找这个答案,但没有找到任何有用的东西。这是我的代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string name, userName, securityNumber, password;
    string str1, str2, str3;
    string x = "x";
    cout << "Enter your name: ";
    cin >> name;
    cout << "Enter your Social Security Number: ";
    cin >> securityNumber;
    cout << "Enter your username: ";
    cin >> userName;
    cout << "Enter your password: ";
    cin >> password;

        {
        securityNumber.replace(0, 99, x);
        password.replace(0, 99, x);
        str1 = name + " " + securityNumber;
        str2 = userName + " " + password;
        str3 = str1 + " " + str2;
        }
    cout << "Your information: " << str3 << endl;
    system("Pause");
    return 0;
}
securityNumber.replace(0, 99, x);

std::string::replace()有许多不同的过载。您正在呼叫

std::string& replace (size_t pos,  size_t len,  const std::string& str);

版本;这用CCD_ 4替换从CCD_ 2到CCD_。因此,在这种情况下,securityNumber中的前99个字符将被单个"x"替换。

我敢肯定这不是你想要的。目标是用x替换securityNumber中的每个字符吗?还是只是数字?在第一种情况下,构造一个填充了适当数量的x的新字符串可能会更容易,例如:

 securityNumber = std::string(securityNumber.length(), 'x');

我认为您不想永久替换用户输入的字符串。

你可能想做的是:

// make a temporary display string of size same as that of securityNumber with all characters 'x'
std::string tempDisplay( securityNumber.size(), 'x' );
str1 = name + " " + tempDisplay;

如果您仍然想使用replace和您附带的相同字符串,您可以使用securityNumber.replace(securityNumber.begin(), securityNumber.end(), securityNumber.size() , 'x');例如,它将采用任意长度的字符串,然后将其内容替换为x个字符。

您在这里有很好的答案,但是您也可以用这种方式来做,如果您想用x替换所有a字符,您可以使用这个代码片段:

for(int i = 0;i < SecurityNumber.length;i++)
   if(SecurityNumber[i] == 'a')
      SecurityNumber[i] = 'x';