【发布时间】:2014-11-26 07:30:21
【问题描述】:
我有一个提示用户输入的功能。如果他们输入的字数超过了我想要的字数(3),那么应该打印一个错误。我该如何处理?我发现了如何检查输入是否为 3。
struct Info
{
std::string cmd;
std::string name;
std::string location;
}
Info* get_string()
{
std::string raw_input;
std::getline(std::cin, raw_input);
std::istringstream input(raw_input);
std::string cmd;
std::string name;
std::string location;
input>>cmd;
input>>name;
input>>location;
Info* inputs = new Info{cmd, name, location};
return inputs;
}
我的函数自动获取 3 个字符串并将它们存储在我的结构中,稍后我会检查结构的任何部分是否为空(例如:“Run”“Joe”“”),但如果它们输入4个字符串?谢谢
【问题讨论】:
-
第四个字符串是否应该被忽略是有争议的,这里没有问。我不明白反对票。问题提示:尝试读取第四个字符串并期望它失败(例如为空)!
-
当我刚开始编程并且正在寻找更好的编码方式时,我想人们会认为这是一个愚蠢的问题。无论如何,我正在考虑看第四个,但在我的情况下我该怎么做呢?我是否必须在我的结构中创建另一个元素来表示第四个字符串?
-
不,您只需要在
get_string函数中添加第四个本地std::string变量:std::string remainder; input << remainder; if (!remainder.empty()) { /* user has given a forth word */ }。将您甚至不感兴趣的数据复制到Info结构中是没有意义的。