我正在使用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将其作为输入,解析其中的三个float。const char *在哪里输入?我是C语言的新手,但我的sscanf语法及其用法的上下文与我所看到的所有示例都匹配。
这是在我尝试使用nvcc编译的cuda 5.5程序中包含的头文件中进行的(如果相关)。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句