没有用于调用sscanf的匹配函数

时间:2014-02-11 10:47:48

标签: c++ scanf

为什么我在sscanf包含<cstdio>并打开file后收到此错误?

我正在做主:

string  line;
int     num = 0, i;
while(getline(file, line)){
    ++num;
    if (sscanf(line, "%d", &i) == 0) --num;
}

并收到错误No matching function for call to 'sscanf'

sscanf参考:http://www.cplusplus.com/reference/cstdio/sscanf/

3 个答案:

答案 0 :(得分:3)

sscanf()是一个 C 函数。第一个参数应为const char *类型。您传递的是 C ++ string。由于类型不匹配,编译器会抱怨(应该)。

试试这个:

sscanf( line.c_str(), "%d", &i )

更好的是,使用更健壮的C++ I/O

file >> i

答案 1 :(得分:1)

尝试使用sscanf(line.c_str()...

答案 2 :(得分:0)

sscanf是一个C函数,而不是C ++函数,所以它不了解std :: string类。相反,您需要传入一个指向char数组的指针:

char buffer[32];
sscanf(buffer, "%d", &i);