避免在空格分隔输入后忽略()
Avoid ignore() after whitespace-delimited-input?
-
如何在空格分隔的输入后显示剩余字符?或者,如果这个问题问错了,我怎么知道他们躲在那里,需要被忽略?
-
我必须怎么做才能避免使用
cin.ignore()
?我试图学习如何使用get()
和getline()
.似乎它们只有在我首先使用cin.ignore()
时才有效,这对我来说似乎效率低下。
我的代码提示我输入一个数字,看起来很像这样:
int previousVar;
std::cout<<"ntWhat value should previousVar be?:t";
std::cin>>previousVar;
紧接着,我添加了以下代码(从 cpp 参考网站复制粘贴(:
std::string name;
//std::cin.ignore();
std::cout << "Please, enter your full name: ";
std::getline (cin, name);
std::cout << "Hello, " << name << "!n";
cin>>beforeExit;
我的代码完全跳过了名称收集部分,直到程序结束暂停,除非我有cin.ignore()
。我在其中一个 cpp 参考页面上读到,我可能有以前cin
输入的剩余字符。我在 http://www.cplusplus.com/forum/beginner/111268/以及cin.get((和cin.getline((之间的差异上看到了类似的问题,但我不确定他们问的是和我一样的事情。
std::cin>>previousVar
不会提取读取int
之后的字符,其中包括换行符。因此,如果您不使用 std::cin.ignore
,std::getline (cin, name)
将立即由于这个换行符而结束。
为避免std::cin.ignore
,您可以在第一次读取中使用std::getline
,这将提取换行符:
std::string previousVarStr;
std::cout << "ntWhat value should previousVar be?:t";
std::cin >> previousVarStr;
auto previousVar = std::stoi(previousVarStr); // or (in C++17) use std::from_chars if you care about the performance
或者在第二次读取中使用>>
,这将忽略前导空格:
std::string name;
std::cout << "Please, enter your full name: ";
std::cin >> name;
std::cout << "Hello, " << name << "!n";
相关文章:
- 2D数组来自文本输入,中间有空格
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 如何打印不带空格的输入整数?
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- 当输入在带有空格的单行中给出时,cin 如何在 while 循环中工作?
- 从输入文件修剪空格
- 防止在字符数组中输入双倍空格在 C++
- 如何处理包含空格的 cin 的用户输入?
- C++ - 如何将空格键转换为短划线以进行cmd输入
- CIN不接受C++中带有空格的输入?
- 将空格作为单字符数据类型的输入?
- 防止控制台在通道字符(在 c++ 中)中输入空格(即空格、制表符和换行符)
- 用空格填充 2D 数组(从文件输入)
- 检测要在 if 语句中使用的输入空格
- 如何在 C++ 中的字符数组中输入空格
- C++ cin 在输入空格为零的非常大的字符串时冻结
- 在同一行中输入空格
- 通过输入空格退出c++中的While循环
- 我如何告诉cin不允许输入空格?(c++)
- 当我为第一个字符串(C++)输入空格时,如何删除输出中的双引号和逗号