我正在编写一个程序,允许学生编写问题并将问题(或字符串)存储在变量中,任何人都可以告诉我获取用户输入的最佳方式
感谢您的回答和评论
答案 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示例示例。 这是短暂的简单,最小的错误。