c++ - 重叠的字符串

标签 c++ c string char arduino

我遇到了重叠 char* 的问题。

我在低内存环境中工作,即 Arduino,我想使用尽可能少的内存。我希望能够在一个字符串前面加上另一个字符串,并且不需要复制任何浪费内存的变量。

这是标准 C 或 C++。

char* bigPacket = (char*)malloc(25);   //Makes a big string of length 25
char* payload = bigPacket + 2;         //This is part of the big string, 2 chars in.
bigPacket[0] = 72;                     // Letter 'H'
bigPacket[1] = 72;                     //I'm expecting the final bigPacket to read    "HHHello, world"
payload = "Hello, World";
print(bigPacket);

但问题是它没有按应有的方式打印“HHHello, world”。相反,它只打印“HH”。有没有正确的方法让它能够重叠这些字符串来打印“HHHello,world”?

最佳答案

您更改了 payload 指向的位置。您需要做的就是保留 payload 并更改它指向的数据。

strcpy(payload, "Hello World");

编辑:如果你真的想避免复制,你最终会得到像 SGI Rope 类这样的东西。但是您会在代码复杂性方面付出很多代价。

关于c++ - 重叠的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25109415/

相关文章:

c++ - CUDA - 设备上的推力::排序仅返回 0

c - C 中使用回车符终止程序

c - 如何在 C 中初始化指向结构的指针?

java - 将另一个 String[] 添加到 String[]

c++ - 在较大字符串中查找子字符串的查找方法

c++ - SDL——面向对象的方式

c++ - 使用 boost::asio::async_write 时数据困惑

c++ - 深奥的 C++ 运算符

使用按位运算符的条件语句

ruby-on-rails - 从 Ruby/Rails 中的路径字符串中删除最后一个路径目录