Попытка заменить символы в C ++ Strings, полностью застрял

0

Я новичок в хороший день, и я пытаюсь ввести несколько строк, а затем заменить лишь некоторые из них буквой "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;
}
  • 3
    Вы также можете просто сказать securityNumber = password = x; тогда.
Теги:
visual-studio-2010

4 ответа

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. Итак, в этом случае первые 99 символов в securityNumber заменяются одним "x".

Я почти уверен, что это не то, что вам нужно. Является ли цель заменить каждый символ в securityNumber на x? Или просто числовые цифры? В первом случае проще было бы просто построить новую строку, заполненную соответствующим числом x s, например:

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

Если вы все еще хотите использовать замену и ту же строку, в которую вы вошли, вы можете использовать securityNumber.replace(securityNumber.begin(), securityNumber.end(), securityNumber.size(), 'x'); например, который примет строку любой длины, а затем заменит ее содержимое символами x.

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

У вас есть хорошие ответы здесь, но вы можете сделать это таким образом, что и вы могли бы просто использовать этот код, если скажут, вы хотите заменить все символы с й:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню