我正在使用 getline 在循环中读取我的程序的输入。
string temp(STR_SIZE, ' ');
string str_num(STR_SIZE, ' ');
...
getline(cin, temp, '\n');
之后,我使用一个函数来查找下一个分隔符(空白)并将空白之前的所有字符分配给 str_num。看起来像这样:
str_num.assign(temp, 0, next_white_space(0));
我已经验证这很好用。我的解决方案的下一步是将 str_num 转换为 int(这部分也很好用),但我应该检查以确保 str_num 中的每个字符都是数字。这是我尝试过的最好的:
if(!isdigit(str_num[0] - '0')) {
cout << "Error: Not an appropriate value\n";
break; /* Leave control structure */
}
出于某种原因,这总是打印错误消息并退出结构。这是为什么?我以前使用过 operator[] 来处理字符串对象,它似乎工作得很好。但是,在这里,它完全把我搞砸了。
谢谢。