我想漂亮打印Clang
声明到string
,以便打印声明的C/C++代码。我这样做以下列方式:漂亮打印声明在叮铛声字符串
//Generate string and string ostream.
string stmt;
raw_string_ostream stream(stmt);
//Get statement from ASTMatcher and print to ostream.
auto* statement = result.Nodes.getNodeAs<clang::Expr>(types[VAR_STMT]);
statement->printPretty(stream, NULL, PrintingPolicy(LangOptions()));
//Flush ostream buffer.
stream.flush();
cout << statement << endl;
此代码编译并运行正常。但是,当我运行以下代码时,我得到statement
对象的地址打印到string
。例如,当我运行此代码,我得到以下的输出:
0x3ccd598
0x3ccd5b0
0x3ccd728
0x3ccdc88
0x3ccdd08
是不是真的在Clang
的文档很多文档中关于printPretty(...)
的那么什么是正确的方式到打印一个statement
的代码为字符串?