C++ : Getline Function Mechanics

标签 c++ getline

#include <iostream>
#include <string>

using namespace std;


int main()
{
   int num;
   cin >> num;
   string s;
   getline(cin, s);
   cout << s << " " << num << endl;
   return 0;
}

在这段代码中,如果我输入 3 并按回车键,则 s 将接受一个空字符串。

1)如果是第一个字符作为换行符,那么有没有先把整数作为输入再把line作为输入的解决方案?

2) 如果我的输入是 4567artyu 那么它如何决定 7 必须进入 s 还是 num ?

最佳答案

我建议您始终阅读用户输入的完整行。它会引起最少的困惑。

  • 征求意见。
  • 使用 std::getline 读取一行输入。
  • 如果您不想要一个字符串,而是一个整数,请使用 std::stoi或(更一般)boost::lexical_cast安全地将输入转换为所需的目标类型。这是您发现糟糕的输入并向用户提示的地方。

我不认为很多用户在提示输入数字时会期望输入 42bananas 会被接受为 42 并且 bananas 部分会被“记住”为以后。这很可能是打字错误,用户会很乐意被要求更正。

关于C++ : Getline Function Mechanics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31815469/

相关文章:

C++ 使用 getline() 打印 : pointer being freed was not allocated in XCode

c - 是否可以从给定索引开始在 C 中使用 getLine()?

c++ - boost::signals2 的绑定(bind)类成员函数

c++ - vector.resize() 方法在调整大小时是否调用默认元素构造函数?

c++ - 如何在 c++ 类中使用模板特化,为什么它不能编译?

c++ - 用连字符替换字符串中的文本

c++ - 使用 DirectX11 : Aligning rectangles on a display graph 的 Direct2D 绘图

c++ - 窗口中的QT窗口?

c - 在 get_line 实现中,如何允许用户移动光标?

c++ - 将用户的长数字保存在数组中 (c++)