c++ - cin 会将键盘输入的\n 识别为换行符吗?

标签 c++ newline

我是 C++ 的初学者,所以如果这个问题听起来很愚蠢,我很抱歉..

我编写了这个小程序来帮助我熟悉 cin 的属性:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string next;
    cout<<"Enter your input.\n";
    cin>>next;
    cout<<next;
    return 0;
}

当我在键盘输入中输入 \n 时,返回的是 \n

此外,当我将变量 next 从字符串更改为字符并为其提供与上面相同的输入时,我只返回了一个 \

我的问题是:为什么我没有换行返回? cin 不能将键盘输入的 \n 识别为换行符吗?还是只适用于cout

最佳答案

\n 是C++中的转义序列;当它出现在字符常量或字符串文字中时,两个字符序列将替换为表示默认基本编码中新行的单个字符(在现代系统中几乎总是 0x0A)。 C++ 定义了许多这样的转义序列,全部以 \ 开头。

输入映射不同,在许多情况下,取决于设备。当从键盘读取时,大多数系统会缓冲一整行,并且只有在按下 Enter 键时才从中返回字符;他的 Enter 键发送给 C++ 程序的内容可能会有所不同,文件是以文本模式还是二进制模式打开也会有所不同——在文本模式下,C++ 库应与操作系统协商以确保回车键始终产生由 \n 表示的单个字符。 (std::cin 总是以文本模式打开。)键盘驱动程序是否对 \ 做一些特殊的事情取决于驱动程序,但大多数情况下不会。当从键盘输入时,C++ 从不对 \ 做任何特殊的事情(并且 \n 在 C++ 源代码中除了字符串文字和字符常量之外没有特殊含义)。

关于c++ - cin 会将键盘输入的\n 识别为换行符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10782682/

相关文章:

java - 如何从换行符中给出的api获取数据

单连接上带有事务 block 的 Python Postgres 查询

c++ - 在 C++11 中总是将 std::mutex 声明为可变的?

C++ 结构初始化断言失败

c++ - 如何将 Objective C 的类实例传递给 C++ 方法?

c++ - 如何检测程序陷入无限循环的位置?

Jquery Circle 进度条文本换行

python查找换行符是否在字符串中

powershell - 为什么在PowerShell的Get-Content,Regex和Set-Content之后都没有换行符?

c++ - C++ 中的函数 srand