【发布时间】:2015-12-14 16:26:45
【问题描述】:
我想在 C 或 C++ 中连接 2 个字符串,而不需要新的内存分配和复制。有可能吗?
可能的 C 代码:
char* str1 = (char*)malloc(100);
char* str2 = (char*)malloc(50);
char* str3 = /* some code that concatenates these 2 strings
without copying to occupy a continuous memory region */
然后,当我不再需要它们时,我就会这样做:
free(str1);
free(str2);
或者如果可能的话,我想在 C++ 中实现同样的效果,使用 std::string 或 char*,但使用 new 和 delete(可能在str3)。
关于字符串连接的问题有很多,但我还没有找到相同的问题。
【问题讨论】:
-
不。不可能。
-
翻转你的逻辑,分配一个 150 长度的 char 数组,然后将子字符串分配到 0 和 101 的位置(我知道这对于 c++ 是可能的,我不太了解 C)跨度>
-
没有语言 C/C++。选一个!每个问题一个主题!
-
您必须创建自己的字符串数据结构来存储指向字符串片段的指针。例如,您可以有一个指向字符串的向量或指针数组。
-
@Olaf:我没有看到任何教程请求。只是对字符串的所有元素缺乏了解。