C ++ sscanf在编译时抛出“无合适的转换”错误与不相关的类型

时间:2013-12-04 02:07:09

标签: c++ getline scanf

我正在使用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程序中包含的头文件中发生的,如果这是相关的。

1 个答案:

答案 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