在C中获取用户输入

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

感谢您的回答和评论

解决方法:

格式化I / O;取自Baby’s 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,一次只读取一个单词,并像任何其他空格一样处理换行符.

上一篇:C++输入小结


下一篇:C++ 中 cin.get()、cin.getline()、getline()的用法总结