我有一个输入字符串,需要解析它才能获取 4 - 16 个变量。使用 sscanf 我可以获取前几个变量,但其余的显示为 0。我需要做什么才能获取其余的变量?
行格式:COMMAND [1 - 16 个浮点变量,以空格分隔]
该行来自使用如下内容的文件:
fgets(行, 20, 文件);
sscanf(行, "%s", 参数);
字符串 parString(param);
if(parString == "NEAR"){
sscanf(line, "%s %f", param, &np);
printf("%s %f\n", param, np);
}...
根据行中的第一个单词,我知道在这种情况下需要读入多少个变量。
最佳答案
使用 std::istringstream
可以更好地完成此任务,因为它会记住您到目前为止所读到的位置。所以你可以编写这样的代码
#include <sstream>
std::istringstream input("SPHERE s3 -4 2 -10 2 2 1 0 0 0.5 0 0 1 0 1000");
int var1, var2, var3, var4, var5, var6;
// get first four variables
input >> var1 >> var2 >> var3 >> var4;
if (something or other)
{
// get the next two variables
input >> var5 >> var6;
}
无论如何,类似的事情。我相信您已经明白了。
关于c++ - sscanf 多个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13257170/