2016-11-10 90 views
1

當我鍵入ask兩次,而不是得到askyay askyay回我只得到ask askyay豬拉丁語,for循環,字符串問題

當我輸入dog兩次,而不是得到ogday ogday我得到og dogday

我不知道我在做什麼錯。

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

using namespace std; 

int main() 
{ 

    string vowels = "aeiou"; 
    string new_word; 
    string pig_message; 
    string message; 
    getline(cin, message); 

    for (unsigned int i = 0; i <= vowels.length(); i++) 
    { 
     if (message[0] == vowels[i]) 
     { 
      new_word = message + "yay "; 
      cout << new_word; 
     } 
     else if (!message[0] == vowels[i]) 
     { 
      pig_message = message.substr(1) + message[0] + "ay"; 
      cout << pig_message; 
     } 
    } 
    system("pause"); 
    return 0; 
} 
+1

'std :: getline()'讀取整行,包括空格。就我個人而言,我喜歡這種行爲,但你必須記得處理這些空間。或者你可以使用'std :: cin >> message'來讀取空格分隔的單詞。 –

回答

3

替代的價值觀,並且通過code.The結果步驟變量預期,因爲你不分裂的話再追加「耶」或「AY」

new_word = message + "yay "; 

會導致成

new_word = "ask ask" + "yay"; 

pig_message = message.substr(1) + message[0] + "ay"; 

將生成

pig_message = "og dog" + "d" + "ay"; 
+0

我有點困惑,只是爲了「狗」和「問」。或者你的意思是別的。因爲我的目標是把整個句子變成拉丁文。 – fivestar