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

C++ sSCANF在编译时抛出“不合适的转换”与不相关类型,c++,getline,scanf,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.cuh4

我使用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.cuh41:错误:不存在从std::string到const char*的合适转换函数

我的理解是,getline用stream对象的一行填充字符串行,然后sscanf将其作为输入,解析其中的三个float。const char*在哪里输入?我不熟悉C语言,但我的sscanf语法及其使用上下文与我见过的所有示例都匹配

这是在一个头文件中发生的,我已经包含在一个CUDA5.5程序中,我正试图用nvcc编译,如果相关的话

sscanf来自C,因此需要一个C字符串,将line.C_str传递到sscanf

sscanf来自C,因此需要一个C字符串,将line.C_str传递给sscanf

sscanf(line.c_str(), "%a %a %a", &x, &y, &z); //.c_str() returns the c-style string of std::string