llvm::Type
2.9以前用过getDescription
方法来检索该类型的字符串表示。这个方法在llvm 3.0中不再存在。
我不确定这是否被弃用而不是Type::print(raw_ostream&)
,但无论如何我对这个API很好奇。关于如何使用它的例子有哪些?如何转储到string
或const char*
?
特别是,我想将字符串传递给Boost::Format
,这是一个现代的c ++ sprintf
。
答案 0 :(得分:13)
我想,你需要创建一个llvm::raw_string_ostream
的实例并将你的std :: string传递给它的construtor。现在您可以将其用作llvm::raw_ostream
,完成后只需拨打.str()
即可获取字符串。
类似的东西:
std::string type_str;
llvm::raw_string_ostream rso(&type_str);
your_type->print(rso);
std::cout<<rso.str();
LLVM已更改其界面,因此现在可以使用以下内容:
std::string type_str;
llvm::raw_string_ostream rso(type_str);
your_type->print(rso);
std::cout<<rso.str();