我想漂亮打印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
的代碼爲字符串?