Я новичок в хороший день, и я пытаюсь ввести несколько строк, а затем заменить лишь некоторые из них буквой "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);
версия; это заменяет часть входной строки от pos
до pos+len
с str
. Итак, в этом случае первые 99 символов в securityNumber
заменяются одним "x".
Я почти уверен, что это не то, что вам нужно. Является ли цель заменить каждый символ в securityNumber
на x
? Или просто числовые цифры? В первом случае проще было бы просто построить новую строку, заполненную соответствующим числом x
s, например:
securityNumber = std::string(securityNumber.length(), 'x');
Если вы все еще хотите использовать замену и ту же строку, в которую вы вошли, вы можете использовать securityNumber.replace(securityNumber.begin(), securityNumber.end(), securityNumber.size(), 'x');
например, который примет строку любой длины, а затем заменит ее содержимое символами 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;
У вас есть хорошие ответы здесь, но вы можете сделать это таким образом, что и вы могли бы просто использовать этот код, если скажут, вы хотите заменить все символы с й:
for(int i = 0;i < SecurityNumber.length;i++)
if(SecurityNumber[i] == 'a')
SecurityNumber[i] = 'x';
securityNumber = password = x;
тогда.