首页 > 解决方案 > 尝试将数组中的字符串转换为 char* 数组时出现段错误

问题描述

我正在从文本文件中读取并接收字符串并将它们放入两个单独的数组中。例如: TargetArr[1] 和 TypoArr[1] 是对的。我需要能够查看字符串中的每个字母,所以我尝试将它们转换为 char 数组。我想要两个 char 数组。我的代码给了我一个段错误,它来自我试图创建 char*[] 并将字符串转换为 char 数组时。不知道我在这里做错了什么。我试图在我的普通数组中获取第一个字符串,使其成为 char 数组,然后放入我的 char 数组数组中。

if (myfile.is_open()){
    for(int i=0; i<num; i++){
        getline(myfile,targetArr[i]);
        getline(myfile,typoArr[i]);
        getline(myfile,skip);
    }
}

char* targetCArr[num+1];
char* typoCArr[num+1];
for(int i=0; i<num; i++){
    strcpy(targetCArr[i], targetArr[i].c_str());
    strcpy(typoCArr[i], typoArr[i].c_str());
}

标签: c++arrayscharstrcpy

解决方案


我需要能够查看字符串中的每个字母,所以我尝试将它们转换为 char 数组。

没有必要这样做。例如,您可以这样做:

for (char ch : MyString)
    std::cout << ch;

您还可以std::string通过执行以下操作访问 a 的各个元素:

char ch = MyString [index];

最后,如果你确实需要一个 C 风格的字符串,你可以这样做:

const char *c_string = MyString.c_str ();

推荐阅读