【问题标题】:std::cin.getline(f_name, 10)std::cin.getline(f_name, 10)
【发布时间】:2011-01-20 10:47:11
【问题描述】:

如果我有例如以下语句:

char f_name[11];
std::cin.getline(f_name,10);

这是什么意思: * 声明一个 11 个字符宽的字符串? * 读取输入的行并将其作为“f_name”的值传递?

谢谢。

【问题讨论】:

    标签: c++ std getline cin


    【解决方案1】:

    是的,你是对的!

    char f_name[11];
    

    11 元素声明数组f_name

    std::cin.getline(f_name,10);
    

    提示输入值,然后将其存储在f_name[11]

    【讨论】:

      【解决方案2】:

      是的,也不是。

      char f_name[11];
      

      声明一个包含 11 个元素的 char 数组。它不是一个真正的字符串 - 如果它最后有一个 NUL ('\0'),你可以认为它是一个“C 字符串”(它没有)。

      std::cin.getline(f_name, 10);
      

      可能会或可能不会读取整个输入的行,因为它最多只能读取 9 个字符。您需要使缓冲区大于为cin.getline 提供的值。

      除非您有特定的理由不这样做,否则请使用std::getline 来读取 C++ 中的一行。下面是一个例子。

      #include <string>
      std::string line;
      std::getline(std::cin, line);
      

      【讨论】:

        猜你喜欢
        • 2011-06-12
        • 1970-01-01
        • 1970-01-01
        • 2011-05-05
        • 2012-09-13
        • 2016-11-01
        • 2014-04-07
        • 2011-10-12
        相关资源
        最近更新 更多