cin会识别\ n键盘输入作为换行符吗?

时间:2012-05-28 09:57:13

标签: 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

3 个答案:

答案 0 :(得分:2)

如果您需要程序在输入中将\n识别为新行字符,可以查看以下内容: https://stackoverflow.com/a/2508814/815812

迈克尔所说的完全正确。

你可以用类似的方式试试。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

从技术上讲,这取决于程序之外的东西,但假设你的终端只是传递了对应于'\'和'n'字符的单个字节(我认为任何理智的字符),那么你的行为就是看到了。

“\ n”只不过是添加到编程语言和环境中的快捷方式,可以让您更轻松地表示ASCII返回键的概念。它不是一个字符本身,只是一个命令,告诉程序生成一个不可打印的字符,对应于按Enter键。

假设您正在使用记事本或其他任何内容,并按Tab键。它标记了一个点。键入“\ t”只输入文字字符“\”和“t”。在内部,编写记事本的人必须说出当用户按下Tab时它应该做什么,并且他通过使用助记符这样做

if(key == '\t') {
    // tab over 
}