将 char[ ][ ] 的地址复制到 C 字符串
Copying address of char[ ][ ] to C-string
问题是我没有找到将char[ ][ ] arr的地址复制到字符串的正确方法。是的,我知道一些关于reinterpret_cast的事情,但据我谷歌搜索,除了如何查询地址之外,我没有找到任何东西,但没有找到关于复制的内容。
更准确地说,比方说,我有 char **arr,将其初始化为
Hello
World
现在,我想复制,例如,第二个单词的第二个字母的地址到某个 char[] 字符串。我该怎么做?Strcpy 总是抱怨无论使用我reinterpet_cast或.
这就是我创建数组的方式:
char **arr;
arr = new char*[10];
char buf[100];
int i = 0;
while (gets_s(buf) && strlen(buf)!=0 ) {
*(arr + i) = (char*)malloc(sizeof(buf));
strcpy(*(arr + i), buf);
i++;
}
填充arr
时,将出现的*(arr + i)
都替换为arr[i]
,并将sizeof(buf)
替换为strlen(buf)+1
。
char **arr;
arr = new char*[10];
char buf[100];
int i = 0;
while (gets_s(buf) && (strlen(buf) != 0) && (i < 10)) {
arr[i] = (char*) malloc(strlen(buf)+1);
strcpy(arr[i], buf);
i++;
}
并且不要忘记在使用完它们后free()
分配的字符串:
for (int j = 0; j < i; j++) {
free(arr[j]);
}
但是你的问题被标记为c++
,这段代码非常C,而不是C++。C++方式看起来更像这样:
#include <iostream>
#include <vector>
#include <string>
std::vector<std::string> arr;
std::string buf;
while (std::getline(std::cin, buf) && !buf.empty()) {
arr.push_back(buf);
}
话虽如此,当你说你想"复制,例如,第二个单词的第二个字母的地址到某个字符[]字符串"时,这是没有意义的。不能将地址复制到字符数组中。您唯一可以为其分配地址的是指针,例如:
char *ptr = &arr[1][1]; // address of 'o' in "World"
如果需要,您可以通过该指针访问同一指向字符串的其他字符,使用类似索引的数组,例如:
char ch = ptr[3]; // 'd' in "World"
相关文章:
- 使用 strcpy_s 将字符串复制到字符*
- 在这种情况下,使用 string_view 是否会导致不必要的字符串复制?
- 无法使用 strcpy 将字符串复制到静态结构成员
- 我的 c 字符串复制函数正在损坏其他变量的堆栈
- 将 C 样式字符串复制到免费存储上分配的内存中
- strcpy_s将超过字符串长度的字符串复制到目标缓冲区(用 0xFE 填充)
- 将字符串复制到类中的常量字符
- 使用 copy_if 复制 std::字符串(复制到另一个字符串中)
- 将字符串复制到C 中的另一个字符串并打印其字符
- Linux/C++ 将字符串复制到剪贴板
- 将字符串复制到 char* 的现代C++方法
- 从一个字符串复制到另一个字符串并粘贴到新文件中
- 如何才能将字符串复制到带有 std::string 字段的结构中
- 如何将数字列表从字符串复制到C++向量
- 通过指针将字符串复制到结构
- 如何将包含多个空字符的字符串复制到字符串流
- 为什么我不能从字符串复制初始化字符串流?
- 如何做字符串::复制C++的反义词
- 即使在将新字符串复制到现有字符串之后,旧包含也可用(在某些索引中)
- c无法将字符串复制到文件中