代码之家  ›  专栏  ›  技术社区  ›  Mabadai

字符串输入后的空白

  •  0
  • Mabadai  · 技术社区  · 8 年前

    假设我想在以下代码中输入“错误的输入”字符串:

    cin >> name;
    

    结果只会是“错误的”,而“输入”将被忽略。

    我知道这种情况被标记为“空白”,但为什么会发生呢?为什么编译器不能按原样输入整个字符串,将空白区域称为“\u1”?

    2 回复  |  直到 8 年前
        1
  •  3
  •   Tony Delroy    8 年前

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

    getline(std::cin, name)
    

    一直读到行尾。 getline documentation 将告诉您,如果需要,可以在到达另一个特定字符时终止-只需添加该字符作为第三个参数。

    如果要将空格更改为 '_' ,您可以在 std::string name 阅读后。使用 std::string::find ,则, std::isspace std::string::operator[] -所有这些都记录在cppreference中。com。

        2
  •  1
  •   Yashwant kumar    8 年前

    输入 “输入错误” 首先进入程序的缓冲区,然后看到一个空格 “错误” 它只是将值推送到变量 名称 ,从而忽略输入的第二部分“输入”。这是因为 cin公司 将空格视为换行符。

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

    1.使用getline函数

        getline( std::cin, name );
    

    2.使用cin。get函数

        cin.get(cin, name);
    

    这些函数所做的是忽略空白。

    推荐文章