在字符串中输入换行符

时间:2019-10-13 17:38:53

标签: c++

在这两种情况下,我将\n作为用户输入(以字符串形式)输入一个,而我将\n作为程序本身的字符串的一部分(无用户输入):< / p>

string str1;
cin>>str1;           //case 1 - \n entered as the part of the input

string str="hello\n"; //case 2

1 \n被视为输入字符串的一部分的情况下,而在 2 情况下被视为换行符的原因-为什么?

1 个答案:

答案 0 :(得分:1)

Escape sequences是仅编译时文字。当您的编译器在字符串中遇到\时,它将随后寻找模式以确定该值。 从控制台读入时,输入一次只能读取一个字符。 大多数调试器会将输入的字符串显示为"hello\\n",或分解为单个字符:

'h','e','l','l','o','\\','n' 

当您在代码中手动设置字符串时,例如string str = "hello\n",编译器将识别转义序列并将其视为单个字符'\ n'。这使程序员可以轻松打印字符,而无需输入和打印ASCII值。 另一方面,用户具有输入按钮以方便地添加换行符,并且程序通常被定向为具有人类可读的界面(即,如果我键入“ \”字符,则我希望它是“ \”)我没有使用计算机的经验

关于cin的另一条注释是,它使用换行符其他空格来区分输入的种类。 getline函数用于解决此问题的字符串输入,但是流提取是从空格到空格完成的,因此它与所有数据类型(int,float,char等)一致。