我正在使用sscanf从流中提取浮点数,如下所示:
ifstream ifs;
ifs.open("filename.txt");
string line;
float x, y, z;
while (getline(ifs,line))
{
sscanf(line, "%a %a %a", &x, &y, &z);
//*do something with x, y and z*
}
在编译时,以“sscanf”开头的行返回:
file2.cuh(41):错误:没有合适的转换函数从“std :: string”到“const char *”存在
我的理解是getline用流对象中的一行填充字符串“line”,然后sscanf作为输入,从中解析三个浮点数。 const char *在哪里进入?我是C语言的新手,但我的sscanf语法及其用法的上下文与我见过的所有例子相符。
这是在我正在尝试用nvcc编译的cuda 5.5程序中包含的头文件中发生的,如果这是相关的。
答案 0 :(得分:4)
sscanf
来自C,所以需要一个C-String,将line.c_str()
传递给sscanf
sscanf(line.c_str(), "%a %a %a", &x, &y, &z); //.c_str() returns the c-style string of std::string