我正在编写一个程序,允许学生写一个问题并将问题(或字符串)存储在一个变量中,任何人都可以告诉我获取用户输入的最佳方法
感谢您的回答和评论
解决方法:
格式化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,一次只读取一个单词,并像任何其他空格一样处理换行符.