调用 sscanf 没有匹配函数

No matching function for call to sscanf

本文关键字:函数 sscanf 调用      更新时间:2023-10-16

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

我正在做主要:

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/

sscanf()是一个

C函数。第一个参数应为 const char * 类型。你正在传递它一个C++string.由于类型不匹配,编译器会抱怨(应该如此)。

试试这个:

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

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

file >> i

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

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

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