gpt4 book ai didi

c++ - Vector 不会存储正确的数据类型(wchar_t 而不是 uint16_t)

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:35 27 4
gpt4 key购买 nike

我有一些代码是从网上读取高光谱数据(图像,所以很多整数给出像素强度)到一个 vector 中。我在 Linux 系统上成功地使用了代码,但现在我需要在 Windows 系统上使用相同的代码。我使用 Visual Studio 2008。

在 Linux 中读取数据,我得到一个充满整数的 vector 。在 Windows 上,我得到整数,然后是一些字符或字节数据。我不知道如何更好地描述它。

vector 由

初始化
std::vector< unsigned short int > data;
data.resize( samples * lines * bands );
std::fill( data.begin(), data.end(), 0 );

相关代码为

for( unsigned int i=0; i < num_pixels && file; ++i ){
char number[sizeof(DataType)];
file.read( number , sizeof( DataType ) );
int l = sizeof(DataType)-1;
if (machine_endian != header.big_endian) {
for (int j = 0; j < l; j++, l--){
number[j] ^=number[l];
number[l] ^= number[j];
number[j] ^= number[l];
}
}
unsigned short temp = *((unsigned short int*)number);
data[i] = temp;
}

machine_endian 部分永远不会运行。 temp 只是为了测试我是否可以将数字转换为 int。它工作正常。但是,当我将 temp 放入 vector 时,插入的信息不仅仅是 int,而且它被列为 wchar_t。请参见下图。我想这与字体大小有关,但我不知道为什么。是我的错还是 Visual Studios 的错?有什么想法吗?

最佳答案

实际上,它工作正常。 Microsoft 只是想方便检查 wchar_t 值(它们是 short int 并在 Windows 上表示 utf16 编码字符),所以他们的调试器显示 short int s 为 wchar_t。这只是一个解释问题。

如果您为数据使用了 char,那么几乎在任何架构上都会遇到同样的现象。

关于c++ - Vector 不会存储正确的数据类型(wchar_t 而不是 uint16_t),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7836064/

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