在这两种情况下,我将\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 情况下被视为换行符的原因-为什么?
答案 0 :(得分:1)
Escape sequences是仅编译时文字。当您的编译器在字符串中遇到\时,它将随后寻找模式以确定该值。
从控制台读入时,输入一次只能读取一个字符。
大多数调试器会将输入的字符串显示为"hello\\n"
,或分解为单个字符:
'h','e','l','l','o','\\','n'
当您在代码中手动设置字符串时,例如string str = "hello\n"
,编译器将识别转义序列并将其视为单个字符'\ n'。这使程序员可以轻松打印字符,而无需输入和打印ASCII值。
另一方面,用户具有输入按钮以方便地添加换行符,并且程序通常被定向为具有人类可读的界面(即,如果我键入“ \”字符,则我希望它是“ \”)我没有使用计算机的经验
关于cin的另一条注释是,它使用换行符其他空格来区分输入的种类。 getline函数用于解决此问题的字符串输入,但是流提取是从空格到空格完成的,因此它与所有数据类型(int,float,char等)一致。