c++ - 尝试将数组中的字符串转换为 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());
}
解决方案
我需要能够查看字符串中的每个字母,所以我尝试将它们转换为 char 数组。
没有必要这样做。例如,您可以这样做:
for (char ch : MyString)
std::cout << ch;
您还可以std::string
通过执行以下操作访问 a 的各个元素:
char ch = MyString [index];
最后,如果你确实需要一个 C 风格的字符串,你可以这样做:
const char *c_string = MyString.c_str ();
推荐阅读
- android - 华为机器学习套件下载模型时出现异常
- python - SUMPRODUCT 两列 PYTHON
- .net - 使用代码中的 EF(Core) 迁移重置数据库/表
- routes - 如何在openshift中将证书更改为oc命令?
- go - go: bun: bun ORM 中不区分大小写的字段名
- asp.net-mvc - 如何在控制器方法中反序列化对象时设置 DateTime UTC?
- azure-logic-apps - Azure 逻辑应用程序中大小为 20+MB 的大块逗号分隔平面文件并转换为 Json - ActionResultsSizeLimitExceeded
- azure-devops - 了解作业请求返回的信息
- python - 是否可以从 jupyterlab 启动器中隐藏内核?
- github - 如何设置 GitHub 操作以评论新 PR?