比较字符串的 GetLine 工作一次,然后比较之后不起作用
GetLine to compare strings works once then the compare doesn't work after
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打开一个控制台窗口,该窗口支持用户输入和输出,并确保使用它。
相关文章:
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 在C++中一次将矢量值写入多个文件
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 为什么 zlib 放气初始化调用一次不起作用?
- 在一次迭代中从 txt 文件中读取多行
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 高级选择排序 - 在一次迭代中搜索两个元素
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何仅使用一次固定<<设置精度(2)?或者至少恢复到默认行为?
- 什么是仅调用一次并调用参数的控制台应用
- 如何确保用户在一行上提示输入一次时输入名字和姓氏?
- (C++)虽然循环一次不起作用,但我引入了多个变量
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- 在将数组与字符数组进行比较后需要帮助输出一次结果
- 为什么比较两次 char 变量比比较一次短变量更快
- 我想一次将一个字符串与许多不同的正则表达式进行比较
- sort——给定一个自定义排序函数,在一次比较中可以进行多个排序查询