C ++ for循环未正确插入。它在第一次迭代时停止

时间:2019-02-13 03:21:22

标签: c++

我有家庭作业。我必须创建一个将空格从字符串中取出并输出结果的函数。由于某种原因,我的for循环没有插入,并且我不确定为什么会这样。这是我的代码:

int main() {

   string userInput;
   string result;
   string letter;


   cin >> userInput;

   result = "";

   for (unsigned int i = 0; i < userInput.size() - 1; ++i){
      letter = userInput.at(i);
      if(userInput.at(i) != ' '){
         result.append(letter);
      }
   }

   cout << result << endl;

   return 0;
}

1 个答案:

答案 0 :(得分:5)

它可能似乎在第一个字母处停止,因为:

cin >> userInput;

只会读取直到第一个空格的字符串。

换句话说,如果输入hello there,则只会得到hello

您可能希望使用getline()来确保获得整行内容:

getline(cin, userInput).

您还想更改循环的继续条件。从字符串长度中减去一个将使您错过最后一个字符。相反,它应该是:

for (unsigned int i = 0; i < userInput.size(); ++i) {