字符串输入后的空格

时间:2018-04-15 08:44:00

标签: c++ whitespace

假设我想输入错误的输入"将字符串转换为以下代码:

 public enum Ports
{
    Teltonica = 3000,
    OBDTracker = 3001
}

结果只会是"错误"而"输入"会被忽视。

我知道这种情况标记为"白色空间",但为什么会发生?为什么编译器不能按原样输入整个字符串,将空格称为" _" ?

2 个答案:

答案 0 :(得分:2)

编译器执行C ++语言规范要求的操作,语言规范需要人们经常需要的东西。当然,想要阅读空白也很常见;还有另一种方法可以实现这一目标:

getline(std::cin, name)

直到行尾才读。 getline documentation会告诉您,如果您想要到达另一个特定角色,您可以终止 - 只需将该角色添加为第三个参数。

如果要将空格更改为'_',则可以在阅读后找到并替换std::string name中的空格实例。使用std::string::findstd::isspacestd::string::operator[] - 所有这些都记录在cppreference.com上。

答案 1 :(得分:0)

输入“错误的输入”首先进入程序的缓冲区,并在“错误”之后看到一个空白区域,它只是将值推送到变量< strong> name ,从而忽略输入的第二部分“输入”。这是因为 cin 将空格视为换行符。

您可以使用以下方法之一来执行此操作:

1.使用getline功能

    getline( std::cin, name );

2.使用cin.get函数

    cin.get(cin, name);

这些功能的作用是忽略空格。