gpt4 book ai didi

c++ - 当我运行此循环以打印字符串中的每个单词时,为什么会丢失一个值?

转载 作者:行者123 更新时间:2023-11-28 03:04:57 26 4
gpt4 key购买 nike

我正在尝试编写一个程序,该程序将接受用户的输入,然后将句子中的每个单词打印在单独的一行上。下面的代码有效,除了它缺少输入的任何句子中的最后一个词。我没有在此代码段中包含 header 。谁能告诉我这是为什么?

int main()
{
//Declare variables
string userSentence = " ";
string permanantUserSentence = " ";
int spaceNumber = 0;
int wordNumber = 0;
int characterCount = 0;
int reverseCount = 0;
int posLastSpace = -1;
int posSpace = 0;

//Begin the loop
while(userSentence != "quit" && userSentence != "q")
{
//Prompt the user for their sentence
cout << "Enter command: ";
getline(cin, userSentence);
permanantUserSentence = userSentence;

//Condition to make sure values are not calculated and printed for the quit conditions
if(userSentence != "quit" && userSentence != "q")
{
//Print each word in the string separately by finding where the spaces are
int posLastSpace = -1;
int posSpace = userSentence.find(" ", posLastSpace + 1);
while(posSpace != -1)
{
cout << "expression is: " << userSentence.substr( posLastSpace+ 1, posSpace - posLastSpace - 1) << endl;
posLastSpace = posSpace;
//Find the next space
posSpace = userSentence.find(" ", posLastSpace + 1);
}
//Clear the input buffer and start a new line before the next iteration
cout << endl;
}
}
}

最佳答案

退出 while 循环时,您不会打印剩余的输入。

句末一般不会有空格。所以你的 while 循环退出时有一些余数(最后一个词和后面的任何内容)。因此,您需要打印输入的剩余部分以打印出单词。

关于c++ - 当我运行此循环以打印字符串中的每个单词时,为什么会丢失一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19967240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com