我想知道为什么sscanf不能正常工作。就是这个案子
我有一个字符串“1,2,3,#”,我想提取不带逗号的数据,代码是
int a1,a2,a3;
char s;
string teststr = "1,2,3,#";
sscanf(teststr.c_str(), "%d,%d,%d,%s",&a1,&a2,&a3,&s);
cout << teststr << endl;
cout << a1 << a2 << a3 << s << endl;
预期的输出应该是
123#
,但我得到的实际结果是120#
,a3
总是0。如果我扩展到4个数字,
int a1,a2,a3,a4;
char s;
string teststr = "1,2,3,4,#";
sscanf(teststr.c_str(), "%d,%d,%d,%d,%s",&a1,&a2,&a3,&a4,&s);
cout << teststr << endl;
cout << a1 << a2 << a3 << a4 << s << endl;
然后结果变成
1230#
。最后一个整数似乎总是0。
为什么会这样?怎么解决?
最佳答案
sscanf(teststr.c_str(), "%d,%d,%d,%s",&a1,&a2,&a3,&s);
^ passing char variable s to %s (specifier for reading single char is %c not %s)
不如试试这个
sscanf(teststr.c_str(), "%d,%d,%d,%c",&a1,&a2,&a3,&s);
关于c++ - 从sscanf提取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32676091/