首页 文章

std :: cin.getline()与std :: cin

提问于
浏览
26

什么时候应该 std::cin.getline() ?与 std::cin 有什么不同?

3 回答

  • 9

    如果是char *,std::cin.getline获取行,而不是 std::cin 获取第一个单词 .

  • 29

    让我们分开 std::cin.getline() . 首先,有 std:: . 这是标准库所在的命名空间 . 它有数百种类型,功能和对象 .

    std::cin 就是这样一个对象 . 它是 <iostream> 中定义的标准字符输入对象 . 它有自己的一些方法,但你也可以使用它与许多自由函数 . 大多数这些方法和函数都是从标准输入中获取一个或多个字符的方法 .

    最后, .getline()std::cin (以及其他类似对象)的一种方法 . 你告诉它应该从左侧的对象(这里是 std::cin )得到多少个字符,以及放置这些字符的位置 . 精确的字符数可以有所不同: .getline() 将在三种情况下停止:1 . 到达行的结尾2.输入中没有剩余字符(由于您可以继续输入,因此 std::cin 上没有正常发生)3 . 读取最大字符数 .

    还有其他方法和功能可以与 std::cin 对象一起使用,例如

    std::string s;
      int i;
      std::cin >> s; // Read a single word from std::cin
      std::cin >> i; // Read a single number from std::cin
      std::getline(std::cin, s); // Read an entire line (up to \n) from std::cin
      std::cin.ignore(100); // Ignore the next 100 characters of std::cin
    
  • 18

    您是否阅读过任何文档(例如http://www.cplusplus.com/reference/string/getline/)?

    基本上,直接使用 std::cin (或更一般地,任何 std::istream )以获得格式化的输入,例如, int x; std::cin >> x; . std::cin.getline() 仅用于填充原始 char * 缓冲区 .

相关问题