2014-02-28 41 views
0

我的代碼的第一部分用於接收來自用戶的單個字符串輸入,並使用字符串類成員函數替換該字中的某些字符。這部分對我來說很容易理解,但我似乎無法弄清楚如何從這些改變的字符中形成一個新的字符串,因爲我將需要使用這個字符串來稍後在我的代碼中進一步操作。如何在for循環中使用多個字符組成字符串

這是有問題的,因爲for循環輸出的單個char變量不能作爲單個字符串進行操作。因爲我現在的代碼,用戶可能會輸入字符串「cheese」並接收輸出ch33s3。但是,這個輸出不是一個字符串;這是一個沒有空間來分開它們的字符集。我無法繼續我的代碼,我的for循環輸出保持當前狀態。

編輯:我現在意識到我已經擁有了我所需要的東西,但我自己卻認爲範圍不適用於我的for循環之外。感謝您的快速和簡單的答案。

+0

你想要的輸出是什麼? – 0x499602D2

+0

我希望輸出保持原樣,只是以字符串的形式,而不是一堆字符。所以在我的例子中,我仍然需要ch33s3的輸出,但是將其保存爲字符串。 – user3366885

回答

0

變量包含改變的字符串,並且可以像這樣操縱。看起來你已經擁有了你所需要的東西。

另外 - 你可能已經知道這一點 - 但你不需要「at」功能來完成你在這裏做的事情。您可以像數組一樣索引字符串。例如:

word[i] = 'e'; 
cout << word[i]; 
+0

剛剛檢查了我的代碼,你完全正確,不知道爲什麼我沒有意識到自己。謝謝! – user3366885

+0

不客氣。你能選擇我的答案作爲正確的答案嗎?或者如果可以的話,至少「投票」呢? – plafratt

+0

@ user3366885 _'我沒有意識到我自己。'儘管不要錯過其他答案,更深入地解釋發生了什麼,並給出你的原始意圖和理解的觀點。 –

1

事實證明,您的工作已經爲您完成。循環結束後,您的變量「word」將保持值「ch33s3」。

2

你都幾乎已經完成:

#include <iostream> 
#include <string> 

using namespace std; 

int main(){ 
string word; 
char letter; 
int i; 
cout << "Enter a word: "; 
cin >> word; 
cout << "\n"; 
    for (i = 0; i < word.size(); i++) 
    { 
     if (word.at(i) == 'e') 
     { 
      word.at(i) = '3'; 
     } 
     if (word.at(i) == 'i') 
     { 
      word.at(i) = '1'; 
     } 
     if (word.at(i) == 'x') 
     { 
      word.at(i) = '*'; 
     } 
    } 
    cout << word << "\n"; 
} 
0

但是這個輸出是不是字符串

您的意思是使用std::ostringstream而不是std::cout接受的結果?

word.at(i) = xxx;語句已經處理了word字符串,並且您擁有它。

下面就來介紹如何獲得std:string結果的樣品,不直接操作word

#include <iostream> 
#include <string> 
#include <sstream> 

int main() { 
    std::string word; 
    char letter; 
    int i; 
    std::cout << "Enter a word: "; 
    std::cin >> word; 

    std::ostringstream leetWord; 
    for (i = 0; i < word.size(); i++) { 
     if (word[i] == 'e') { 
      leetWord << '3'; 
     } 
     else if (word[i] == 'i') { 
      leetWord << '1'; 
     } 
     else if (word[i] == 'x') { 
      leetWord << '*'; 
     } 
     else { 
      leetWord << word[i]; 
     } 
    } 

    // Here you can refer to the ostringstream::str() function to 
    // get a string 
    std::string theWantedString = leetWord.str(); 
    std::cout << word << " => " << theWantedString << std::endl; 
} 

working sample

相關問題