字符串输入后的空格
White space after string input
假设我想在以下代码中输入"错误的输入"字符串:
cin >> name;
结果只会是"错误",而"输入"将被忽略。
我知道这种情况标记为"空格",但为什么会发生呢? 为什么编译器不能按原样输入整个字符串,将空格称为"_"?
编译器
执行C++语言规范要求它执行的操作,而语言规范需要人们经常需要的东西。 当然,想要跨空格阅读也很常见;还有另一种方法可以实现这一点:
getline(std::cin, name)
它读到行尾。 getline
文档会告诉您,如果需要,可以在到达另一个特定字符时终止 - 只需将该字符添加为第三个参数即可。
如果要将空格更改为'_'
,可以在读取后在std::string
name
中找到并替换空格的实例。 使用std::string::find
、std::isspace
和std::string::operator[]
- 所有这些都记录在 cppreference.com。
输入"错误的输入">首先进入程序的缓冲区,在看到"错误">之后的空格时,它只是将值推送到变量名称,从而忽略输入的第二部分"输入"。发生这种情况是因为 cin 将空格视为换行符。
您可以使用以下方法之一来执行此操作:
1.使用获取线功能
getline( std::cin, name );
2.使用cin.get函数
cin.get(cin, name);
这些函数的作用是忽略空格。
相关文章:
- 2D数组来自文本输入,中间有空格
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 如何打印不带空格的输入整数?
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- 当输入在带有空格的单行中给出时,cin 如何在 while 循环中工作?
- 从输入文件修剪空格
- 防止在字符数组中输入双倍空格在 C++
- 如何处理包含空格的 cin 的用户输入?
- C++ - 如何将空格键转换为短划线以进行cmd输入
- CIN不接受C++中带有空格的输入?
- 将空格作为单字符数据类型的输入?
- 防止控制台在通道字符(在 c++ 中)中输入空格(即空格、制表符和换行符)
- 用空格填充 2D 数组(从文件输入)
- 获取由空格分隔的未知大小的单行输入,并将其存储到整数数组中
- 检测要在 if 语句中使用的输入空格
- 如果用户输入两个或多个由空格分隔的字符串C++如何防止缓冲区溢出?
- 使用 Get 的 C++ 输入被替换为空格、不正确的数字
- 在 C++ 中输入带有空格的字符数组
- 仅 C++ 字母和空格输入验证
- 允许用户使用空格输入