比较字符串的 GetLine 工作一次,然后比较之后不起作用

GetLine to compare strings works once then the compare doesn't work after

本文关键字:比较 一次 然后 不起作用 之后 字符串 GetLine 工作      更新时间:2023-10-16
while((addRemove == "R" || addRemove == "r") && continueLoop == true)
{
for(int i = 0; i < choreVector.size(); i++)
{
if(choreVector[i] != "")
{
cout << choreVector[i] << endl;
}
}
cout << endl;
cout << "Enter value to add to remove from the list" << endl;
cin.ignore();
getline(cin, userValue);
cout << endl;
for(int j = 0; j < choreVector.size(); j++)
{
if(userValue == choreVector[j])
{
choreVector.erase(choreVector.begin() + j);
}
}
cout << "Would you like to remove another item from the list(y/n)" << endl;
getline(cin, userValue);
cout << endl;
if(userValue == "n" || userValue == "N")
{
continueLoop = false;
}
}

所以我的问题是我在向量中有一个家务列表,其中包含带有空格的项目,例如: "倒垃圾" 《遛狗》

我的问题是用户可以选择从键盘输入中删除矢量,所以我一直在使用 getline 进行 cin 输入。 Getline 在第一次运行时完美运行以删除任何元素,但在第二次运行时失败,并且在删除第一次运行后不会删除元素。我在 GetLine 之前有 cin.ignore 据我所知,它清除了缓冲区,并且会忽略以前 cin 的任何数据。

可能是我忽略的愚蠢的东西,但如果有人能帮忙,那就太好了。

据我所知,问题似乎出在您的 IDE 上。典型的 IDE 将具有某种"输出"或"消息"选项卡,该选项卡配置为显示窗口的输出,因为它已自动配置为将编译器的输出通过管道传输到此窗口。根据您的 IDE,它们可能支持也可能不支持此窗口中的输入。在最坏的情况下,输入可能非常错误,一半工作,一半损坏。我通常假设我使用的任何IDE都不支持该窗口中的输入,并且将在命令行/终端上手动编译程序,或者我知道code::blocks和Visual Studio打开一个控制台窗口,该窗口支持用户输入和输出,并确保使用它。

相关文章: