2013-11-25 91 views
0

我是一個好日子的新手,我試圖輸入多個字符串,然後用字母「x」替換其中的幾個字符,以便在檢查時檢查它們他們顯示在屏幕上。我知道我的問題很簡單,但我很困難,需要一些幫助。我四處尋找這個答案,但沒有找到任何我可以使用的東西。這是我的代碼:嘗試替換C++字符串中的字符,完全卡住

#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;'然後。 – chris

回答

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
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秒的適當數量的新的字符串,例如:

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

如果你仍然想使用替代,你進來時相同的字符串你可以使用 securityNumber.replace(securityNumber.begin(), securityNumber.end(), securityNumber.size() , 'x'); 例如,將採取任何長度的字符串,然後用x個字符替換它的內容。

0

你有很好的答案在這裏,但你可以這樣做太,你可以只使用此代碼段,如果讓我們說你想X全部更換一個字符:

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