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

时间:2013-11-25 04:49:37

标签: c++ visual-studio-2010

我是一个美好的一天的新手,我正在尝试输入几个字符串,然后只用字母“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;
}

4 个答案:

答案 0 :(得分:2)

securityNumber.replace(0, 99, x);

std::string::replace()有许多不同的重载。你正在调用

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

版本;这会将输入字符串的部分从pos替换为pos+len str。因此,在这种情况下,securityNumber中的前99个字符将被单个“x”替换。

我很确定这不是你所追求的。目标是用securityNumber替换x中的每个字符吗?或只是数字?在第一种情况下,构造一个填充了适当数量的x s的新字符串可能更容易,例如:

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

答案 1 :(得分:1)

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

您可能想要做的是:

// 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;

答案 2 :(得分:1)

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

答案 3 :(得分:0)

你在这里有很好的答案,但你也可以用这种方式做到这一点,你可以使用这段代码片段,如果让我们说你要用 x <替换所有 a 字符/ strong>:

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