c++ - 在字符串对象上读取/写入整数值

标签 c++

我将一个文件的内容分配到一个字符串对象中。为简单起见,该文件只有 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/

相关文章:

c# - 将结构传递给 C#

c++ - 完全合格的源文件路径显示在发布候选断言失败中

c++ - 这个算法的运行时间复杂度是多少?您如何对其进行分析?

c++ - MSVC 错误?未找到受约束函数的重载成员

c++ - 从数列中减去一个数后,剩下的数中有多少是正数?

c++ - 在 Boost::test 中报告异常

c++ - 派生类和基类之间指针到指针的转换?

c++ - Qt 应用程序开发中的 Model View Controller

c++ - 赋值后 Long double 重置为 0

c++ - 带空尖括号 <> 的模板函数调用