首页 > 解决方案 > 在字符串中输入换行符

问题描述

在这两种情况下,我\n作为用户输入(在字符串中)输入一个,我\n在程序本身中作为字符串的一部分(没有用户输入):

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

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

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

标签: c++

解决方案


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

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

当您在代码中手动设置字符串时,例如string str = "hello\n",编译器会识别转义序列并将其视为单个字符'\n'。这允许程序员在不去打印字符的 ASCII 值的情况下使用简写方式来打印字符。另一方面,用户有一个输入按钮来方便地添加换行符,并且程序通常面向具有人类可读界面(即,如果我输入一个'\'字符,我希望它是一个'\',如果我没有使用电脑的经验)

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


推荐阅读