【问题标题】:Seg fault when trying to convert strings inside an array, to a array of char*尝试将数组中的字符串转换为 char* 数组时出现段错误
【发布时间】:2020-07-18 15:29:15
【问题描述】:

我正在从文本文件中读取并接收字符串并将它们放入两个单独的数组中。例如: 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++ arrays char strcpy


【解决方案1】:

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

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

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

您还可以通过以下方式访问std::string 的各个元素:

char ch = MyString [index];

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

const char *c_string = MyString.c_str ();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2022-01-08
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多