c++ - sscanf 多个输入

标签 c++ c input scanf

我有一个输入字符串,需要解析它才能获取 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/

相关文章:

c - XCreateGC() 中的 (value)mask 真的有必要吗?

javascript - 输入无效时显示工具提示

c++ - 将 Protocol Buffer 定义拆分为多个 .proto 文件

c++ - 什么是 tar 解析器中的链接指示器(文件类型)

c++ - 双端队列 : map<. 的问题 ..,双端队列 <>> 失败,但 vector 和列表不是?

c - 系统调用是否直接发送到内核?

c++ - 使用 void 指针从 c 函数调用模板化成员

c - 向文件写入结构问题

java - 如何运行连续循环,直到输入正确范围内的值

javascript - 输入值不会更新