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