我将一个文件的内容分配到一个字符串对象中。为简单起见,该文件只有 5 个字节,即 1 个整数加上另一个字节的大小。 我想要做的是获取字符串对象的前四个字节,并通过程序以某种方式将其存储到有效的整数变量中。 然后程序将对整数进行各种操作,改变它。 之后我希望将更改后的整数存储回字符串对象的前四个字节。
有人能告诉我我能做到吗?为此,我宁愿坚持使用标准 C++ 库。在此先感谢您的帮助。
最佳答案
下面的代码片段应该说明了一些事情。当心字节序差异。玩弄它。试着了解发生了什么。添加一些文件操作(二进制读写)。真正了解如何做到这一点的唯一方法是进行试验并创建一些测试。
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[]) {
int a = 108554107; // some random number for example sake
char c[4]; // simulate std::string containing a binary int
*((int *) &c[0]) = a; // use casting to copy the data
// reassemble a into b, using indexed bytes from c
int b = 0;
b |= (c[3] & 0xff) << 24;
b |= (c[2] & 0xff) << 16;
b |= (c[1] & 0xff) << 8;
b |= c[0] & 0xff;
// show that all three are equivalent
cout << "a: " << a << " b: " << b
<< " c: " << *((int *) &c[0]) << endl;
return 0;
}
关于c++ - 在字符串对象上读取/写入整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2157620/