C++ for 循环未正确交互.它在第一次迭代时停止

C++ for loop is not interating correctly. It is stopping at first iteration

本文关键字:第一次 迭代 交互 循环 for C++      更新时间:2023-10-16

我有家庭作业。我必须创建一个函数,从字符串中取出空格并输出结果。出于某种原因,我的 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;
}

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

cin >> userInput;

将只读取一个字符串,直到第一个空格。

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

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

getline(cin, userInput).

您还希望更改循环的延续条件。从字符串长度中减去 1 会让您错过最后一个字符。相反,它应该是:

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