["STRING", FLOAT, FLOAT, FLOAT],
我需要从该字符串中解析三个值-一个STRING和三个FLOATS。
sscanf()返回零,可能是格式说明符错误。
sscanf(current_line.c_str(), "[\"%s[^\"]\",%f,%f,%f],",
&temp_node.id,
&temp_node.pos.x,
&temp_node.pos.y,
&temp_node.pos.z))
你知道怎么了吗?
答案 0 :(得分:1)
请阅读sscanf(3)上的手册页。 %s格式与使用正则表达式不匹配,它仅扫描非空格字符。即使按您的假设工作,您的正则表达式也将无法正确处理所有JSON字符串(如果您的输入数据格式受到足够的限制,这可能不是问题,但是仍然不干净)。
使用适当的JSON解析器。这并不复杂。我将cJSON用于中等复杂的情况,您应该能够在几个小时内将其集成。
答案 1 :(得分:1)
要解决当前的问题,请使用以下格式说明符:
"[\"%[^\"]s\",%f,%f,%f],"
解析 set 的正确语法是%[...]s
,而不是%s[...]
。
话虽这么说,sscanf()
并不是解析JSON的正确工具。例如,即使是“固定”代码也无法解析包含转义引号的字符串。
使用适当的JSON parser library。