gpt4 book ai didi

c++ - istringstream 十进制整数输入为8位类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:20 26 4
gpt4 key购买 nike

这个:

#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)给我“error:二进制操作数无效表达式('istringstream'(又名'basic_istringstream')和'int')”(clang)或“错误:'operator>>'的模糊重载”(g++)。

有没有办法将值作为数字直接读入 8 位 类型,还是我必须使用中间存储?

最佳答案

没有内置的8位类型;您正在为 signed char 使用别名,当您对任何类型的 char 进行格式化输入时,IOStreams 将总是提取单个 ASCII 字母。

所以,是的,使用中间存储,或者将 int8_t 包装在一个新类中,该类为格式化 I/O 提供自己的重载(除非您有严格的内存和/或性能要求)。

(您对 iss >> (int)x 的尝试非常困惑;转换用于您要获取其值的表达式,而不是用于您要设置的左值命名对象的值(value)。)

关于c++ - istringstream 十进制整数输入为8位类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25230473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com