用C ++获取用户输入

时间:2011-10-30 12:24:03

标签: c++ string getline cin

我正在编写一个程序,允许学生编写问题并将问题(或字符串)存储在变量中,任何人都可以告诉我获取用户输入的最佳方式

感谢您的回答和评论

2 个答案:

答案 0 :(得分:10)

格式化I / O;取自 Baby的First C ++

#include <string>
#include <iostream>

int main()
{
  std::string name;
  std::cout << "Enter your name: ";
  std::getline(std::cin, name);
  std::cout << "Thank you, '" << name << "'." << std::endl;
}

这不太令人满意,因为很多事情都会(因此会出错)。这是一个稍微防水的版本:

int main()
{
  std::string name;
  int score = 0;

  std::cout << "Enter your name: ";

  if (!std::getline(std::cin, name)) { /* I/O error! */ return -1; }

  if (!name.empty()) {
    std::cout << "Thank you, '" << name << "', you passed the test." << std::endl;
    ++score;
  } else {
    std::cout << "You fail." << std::endl;
    --score;
  }
}

使用getline()意味着您可能会读取一个空行,因此检查结果是否为空是值得的。检查读操作的正确执行也是很好的,因为用户可以将空文件传输到stdin中(例如,通常,永远不要假设存在任何特定情况并为任何事情做好准备)。替代方案是令牌提取std::cin >> name,它一次只读取一个单词并像处理任何其他空格一样处理换行符。

答案 1 :(得分:0)

使用gets()作为this示例示例。 这是短暂的简单,最小的错误。