错误:无法在初始化中将"std::string {aka std::basic_string<char>}"转换为"char*"
error: cannot convert ‘std::string {aka std::basic_string<char>}’ to ‘char*’ in initialization
我正在修补C++(我有COBOL,Perl和PHP背景),并且我在拆分字符串时遇到问题,以便我可以对每个解析的字段进行操作。我相信问题在于我对C++如何处理变量缺乏了解。
我已经成功地将文件的内容放入数组中,我可以对每个完整的行进行操作(例如搜索/替换文本)。我还发现了一些如何解析字符串的很好的例子。当我尝试将解析示例应用于数组中的字符串时,会出现此问题。
字符串通过以下方式创建:
std::vector<std::string> File_Lines;
ifstream file(filename.c_str());
while ( file.good() ) {
getline ( file, line, 'n' );
string InputLine = string( line );
File_Lines.push_back(line);
}
解析字符串的一个工作示例(我在此站点上找到)是:
char myString[] = "The quick brown fox";
char *p = strtok(myString, " ");
while (p) {
printf ("Token: %sn", p);
p = strtok(NULL, " ");
}
当我尝试将字符串馈送到执行解析的代码时,问题就开始了。直接喂食:
char myString[] = File_Lines[array_counter];
给出"错误:初始值设定项无法确定'myString'的大小"
如果我尝试使用"std::string"进行转换(如本网站其他答案所示):
std::string File_Line;
File_Line = File_Lines[array_counter];
char myString[] = File_Line;
。我得到同样的错误。
其他答案建议将代码调整为:
char *myString = File_Line;
但这只会给我"错误:无法在初始化中将'std::string {aka std::basic_string}'转换为'char*'
我知道这个问题是由于我自己的无知造成的,但我真的很感激任何关于如何将字符串输入解析器的帮助。
此外,如果有人对如何在数据类型之间进行转换有任何简单的解释,那就太好了。
这应该没问题:
std::string ThisLine = File_Lines[array_counter]; // make a copy for strtok to mess up
char *p = strtok(&ThisLine[0], " "); // strtok needs a pointer to the first character
while (p) {
printf ("Token: %sn", p);
p = strtok(NULL, " ");
}
但是C++有比strtok更好的标记方法。 例如,std::strstream
带有operator>>
(对于空格分隔符)或getline
(对于您指定的分隔符)。
使用以下命令:
const char * myString1 = File_Lines[array_counter].c_str();
char * myString=const_cast<char*>myString1;
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- 使用 std::string () const 函数启动线程或未来
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 如何更改大小(std::string)
- std::string 的对象真的可以移动吗?
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 无法从 std::string 中提取C++ Unicode 符号
- std::string 构造函数如何处理固定大小的 char[]?
- 真的没有来自 std::string_view 的 std::string 的显式构造函数吗?
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- 重载 + 自己的类和 std::string 的运算符
- 如何使用 std::string 作为 QHash 的键?
- 将日语 wstring 转换为 std::string
- 可以从std::string继承以提供类型一致性吗
- 构造函数采用std::string_view与std::string并移动
- 在共享缓冲区内存中创建 ::std::string 对象
- std::string.size() 未知行为
- Valgrind 在 std::string::swap 中报告 SIGILL