字符串输入后的空格

White space after string input

本文关键字:空格 输入 字符串      更新时间:2023-10-16

假设我想在以下代码中输入"错误的输入"字符串:

cin >> name;

结果只会是"错误",而"输入"将被忽略。

我知道这种情况标记为"空格",但为什么会发生呢? 为什么编译器不能按原样输入整个字符串,将空格称为"_"?

编译器

执行C++语言规范要求它执行的操作,而语言规范需要人们经常需要的东西。 当然,想要跨空格阅读也很常见;还有另一种方法可以实现这一点:

getline(std::cin, name)

它读到行尾。 getline文档会告诉您,如果需要,可以在到达另一个特定字符时终止 - 只需将该字符添加为第三个参数即可。

如果要将空格更改为'_',可以在读取后在std::string name中找到并替换空格的实例。 使用std::string::findstd::isspacestd::string::operator[] - 所有这些都记录在 cppreference.com。

输入"错误的输入">首先进入程序的缓冲区,在看到"错误">之后的空格时,它只是将值推送到变量名称,从而忽略输入的第二部分"输入"。发生这种情况是因为 cin 将空格视为换行符。

您可以使用以下方法之一来执行此操作:

1.使用获取线功能

    getline( std::cin, name );

2.使用cin.get函数

    cin.get(cin, name);

这些函数的作用是忽略空格。