C++ LLVM YAML API无法在YAML文件中读取;错误:不是序列“;
这个问题是我上一个问题的延续C++ LLVM YAML API无法在YAML文件中读取;错误:不是序列“;,c++,yaml,runtime-error,llvm,C++,Yaml,Runtime Error,Llvm,这个问题是我上一个问题的延续 我正在从事一个使用LLVM YAML I/O库的项目。这是我遵循的文档/教程: 我创建了一个小程序,可以将yaml文件读入内存中的对象。然后它会打印这些对象。最后,它会将对象写入另一个输出文件 首先,它解析命令行参数。然后它创建输入读取器。然后它创建YAMLInput对象,用于在中读取*.YAML文件并对其进行解析。在解析步骤中,我遇到了一个错误。假设从*.yaml文件解析输入成功,数据将存储到DocType myDoc中。然后它将打印存储在该std::
读取器。然后它创建YAMLInput
对象,用于在中读取*.YAML
文件并对其进行解析。在解析步骤中,我遇到了一个错误。假设从*.yaml
文件解析输入成功,数据将存储到DocType myDoc中代码>。然后它将打印存储在该std::vector
中的所有Person
对象。重载的运算符myDoc;
如果(错误代码errc=yin.error()){
errs()Amir Kirsh您能帮我解决这个问题吗?奇怪的是,错误出现在输入的第一行,它包含--
,应该被解析为指令结束标记(启动文档内容),而不是像某些YAML实体那样可能会引发错误消息,如非序列。如果删除第一行,会发生什么情况?另一种可能是YAML解析器不支持CR LF结尾,它会。您也可以尝试将行结尾转换为LF,看看这是否有帮助。@flyx如果删除第一行,在t上会发生相同的错误下一行,现在是第一行,也是第一个字符。如果我使用dos2unix
将行尾转换为LF,则会出现相同的错误。文档中显示错误会打印整行。您的错误不是这样的,因此它似乎是在处理输入API时出错,因此您无法获得完整的行。我真的不知道API,但示例似乎希望您使用reader.get()->getBuffer()
,而不是**reader
,所以可以尝试一下。您也可以将文件作为字符串文本放在那里,以检查它是否真的是输入错误。
---
- name: Tom
hat-size: 8
- name: Dan
hat-size: 7
- name: Ken
...
cp output_file.yaml input_file.yaml
./yaml_project --input-file=input_file2.yaml --output-file=output_file.yaml
opening input file input_file2.yaml
reading input file input_file2.yaml
input_file2.yaml:1:1: error: not a sequence
-
^
error parsing YAML input from file input_file2.yaml
Invalid argument