我正在使用getline在循环中读取我的程序的输入.
string temp(STR_SIZE, ' ');
string str_num(STR_SIZE, ' ');
...
getline(cin, temp, '\n');
Run Code Online (Sandbox Code Playgroud)
之后,我使用一个函数来查找下一个分隔符(空格)并将空格前的所有字符分配给str_num.看起来像这样:
str_num.assign(temp, 0, next_white_space(0));
Run Code Online (Sandbox Code Playgroud)
我已经证实这很有效.我的解决方案的下一步是将str_num转换为int(这部分也很好),但我应该检查以确保str_num中的每个字符都是一个数字.这是我尝试过的最好的东西:
if(!isdigit(str_num[0] - '0')) {
cout << "Error: Not an appropriate value\n";
break; /* Leave control structure */
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,它始终打印错误消息并退出结构.这是为什么?我之前使用了operator []作为字符串对象,它似乎运行良好.但是,在这里,它完全搞砸了我.
谢谢.
std::isdigit 获取char的整数值并检查它.
因此,删除 - '0'并将str_num [index]传递给isdigit().
注意:因为这个函数来自C,所以将字符作为整数处理的旧样式在采用int的方法中显示出来.但是,chars可以提升为int值,所以char变成了一个int就好了,这样可行.
| 归档时间: |
|
| 查看次数: |
5087 次 |
| 最近记录: |