如何将多维字符数组复制到字符 * 中
How to copy multi-dimensional char array into char *
嗨,我正在寻找将多维字符数组复制到字符*字符串中 我能够将多维字符数组复制到 std::string 结果中。
string result;
for (int i=0; i < key; i++)
for (int j=0; j < text.length(); j++)
if (rail[i][j]!='n')
result.push_back(rail[i][j]);`
同样,我想将 2D 字符数组数据复制到字符 *字符串
中假设这些操作是因此完成的,即首先你已经完成了这个:
std::string result;
for (int i=0; i < 2; i++)
for (int j=0; j < len; j++)
result.push_back(Array[i][j]);
那么你已经有一个 char* 数组存储在std::string
中。
char *string = new char[result.size()];
string = strdup(test1.c_str());
现在,如果你跳过std::string步骤(为什么,平台不支持它?(,你宁愿得到这样的东西:
char *string = new char[string_size]; // you have to either measure it beforehand or calculate from array size
int counter = 0;
for (int i=0; i < 2; i++)
for (int j=0; j < len; j++)
string[counter++] = Array[i][j];
如果这是 C 代码,请将new
表达式替换为malloc
调用。并且这段代码存在缺陷,例如您应该分配比所需更多的内存,或者您应该在分配缓冲区之前计算缓冲区的长度。极端情况是在缓冲区达到容量时重新分配缓冲区。std::string
会自动执行此操作。
我不明白为什么这可能是一个设计的问题,除非你没有告诉我们一些关于你需要什么的重要信息。
通常,除非您正在设计自己的容器,否则C++代码永远不会看起来像那样。在ISO兼容的平台上,您将拥有std::string,在大多数嵌入式系统上,例如Arduino,您将可以访问String类。
您可以从C++字符串对象中获取char*字符串。有一个函数 c_str(( 从C++字符串返回 C 字符串。
如果一个char *string
表示一个c风格的字符串(即一个char
字符的数组(,那么你需要跟踪最新的位置(index
下面的代码(,并依次设置每个字符。这是如果您想避免复制。否则,请先构造字符串,然后使用c_str()
,如其他答案所述。
#include <vector>
#include <iostream>
using std::vector;
#include <string>
using std::string;
int main() {
const int key = 2;
string text = "ab";
string rail[2] = {text, text};
char result[key * 100];
int index = 0;
for (int i=0; i < key; i++)
for (int j=0; j < text.length(); j++)
if (rail[i][j]!='n')
result[index++] = rail[i][j];
for (int i = 0; i < index; i++) {
std::cout << result[i] << " " << std::endl;
}
}
相关文章:
- 在这种情况下,我真的复制了字节还是复制了字符?
- 如何返回/复制unique_ptr<无符号字符[]>的值?
- 使用动态分配将 char* 复制到另一个字符**
- 库达如何将字符**从内核复制到主机
- 将字符向量复制到另一个向量
- 如何将一个结构的字符数组复制到结构的另一个字符数组中?
- 将字符数组复制到 QByte 数组中,而无需传递指针
- 为什么我的代码在尝试复制字符数组时引发 C6386 错误?
- 使用 strcpy_s 将字符串复制到字符*
- 字符* 复制到另一个字符* 运行时错误
- C 内联汇编试图将STD :: String的字符复制到寄存器中
- 如何将 (ICU4C) Unicode 字符串逐个字符复制到另一个 Unicode 字符串
- 将第一个n个字符复制到std :: string
- 将无符号字符*复制到无符号字符
- 如何在 C++ 中将一些字符复制到字符串中
- 从未签名字符复制到无符号字符
- 您好,我想将一个字符复制到 2D 数组,但第二个字符会擦除第一个字符
- 将分配有 malloc 的字符 * 复制到 std::string
- 如何在c++中进行反向字符复制
- 如何将字符复制到字符数组