这:
#include <iostream>
#include <sstream>
#include <inttypes.h>
using namespace std;
int main (void) {
istringstream iss("123 42");
int8_t x;
while (iss >> x) {
cout << x << endl;
}
return 0;
}
产生:
1
2
3
4
2
但是我想要:
123
42
强制转换
iss >> (int)x
(我最初使用char
尝试过此操作)会给我“错误:二进制表达式('istringstream'(又名'basic_istringstream')和'int')的无效操作数”(lang)或“错误:模棱两可的重载代表'operator >>'“(g++)。有没有一种方法可以将数值作为数字直接读入 8位类型,还是必须使用中介存储?
最佳答案
您必须使用中间类型或自己进行解析。所有字符类型(char,有符号字符和无符号字符)都被视为文本元素,而不是整数。 int8_t可能只是其中之一的typedef,这就是代码失败的原因。
笔记:
关于c++ - istringstream十进制整数输入到8位类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25230473/