为什么我在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'
。
答案 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);