假设我想输入错误的输入"将字符串转换为以下代码:
public enum Ports
{
Teltonica = 3000,
OBDTracker = 3001
}
结果只会是"错误"而"输入"会被忽视。
我知道这种情况标记为"白色空间",但为什么会发生?为什么编译器不能按原样输入整个字符串,将空格称为" _" ?
答案 0 :(得分:2)
编译器执行C ++语言规范要求的操作,语言规范需要人们经常需要的东西。当然,想要阅读空白也很常见;还有另一种方法可以实现这一目标:
getline(std::cin, name)
直到行尾才读。 getline
documentation会告诉您,如果您想要到达另一个特定角色,您可以终止 - 只需将该角色添加为第三个参数。
如果要将空格更改为'_'
,则可以在阅读后找到并替换std::string
name
中的空格实例。使用std::string::find
,std::isspace
和std::string::operator[]
- 所有这些都记录在cppreference.com上。
答案 1 :(得分:0)
输入“错误的输入”首先进入程序的缓冲区,并在“错误”之后看到一个空白区域,它只是将值推送到变量< strong> name ,从而忽略输入的第二部分“输入”。这是因为 cin 将空格视为换行符。
您可以使用以下方法之一来执行此操作:
1.使用getline功能
getline( std::cin, name );
2.使用cin.get函数
cin.get(cin, name);
这些功能的作用是忽略空格。