2016-11-10 52 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