我有以下代码,其中 vector<int>
其中包含字节被转换为 char[]
.这char[]
然后输出。
vector<int> data;
data.push_back(33);
data.push_back(69);
data.push_back(80);
data.push_back(0);
data.push_back(0);
data.push_back(74);
data.push_back(255);
char* result = new char[data.size()];
for(int i = 0; i < data.size(); i++) {
result[i] = (char)data[i];
cout << i << " = " << (char)data[i] << endl;
}
cout << "--" << endl;
for(int i = 0; i < sizeof(result); i++) {
cout << i << " = " << result[i] << endl;
}
此代码产生以下输出。
0 = !
1 = E
2 = P
3 =
4 =
5 = J
6 = �
--
0 = !
1 = E
2 = P
3 =
但是,我希望它是
0 = !
1 = E
2 = P
3 =
4 =
5 = J
6 = �
--
0 = !
1 = E
2 = P
3 =
4 =
5 = J
6 = �
我怀疑这与尺寸有关,但我不确定。
代码出了什么问题?
最佳答案
您使用 sizeof()
的方式不正确。它返回指针的大小,而不是指向的东西的大小。当您指向项目数组时,无法仅通过其指针来访问所指向事物的大小。
你必须记住你在某处用 new
分配的大小并使用它。
关于C++ 转换字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152992/