【问题标题】:string representation of llvm::Type structurellvm::Type 结构的字符串表示
【发布时间】:2012-01-04 01:55:54
【问题描述】:
llvm::Type 2.9 和更早版本曾经使用getDescription 方法来检索该类型的字符串表示形式。此方法在 llvm 3.0 中不再存在。
我不确定这是否被 Type::print(raw_ostream&) 弃用,但无论如何我对这个 API 很好奇。有哪些关于如何使用它的例子?如何转储到 string 或 const char*?
特别是,我想将字符串传递给Boost::Format,这是一个现代c++ sprintf。
【问题讨论】:
标签:
c++
string
llvm
llvm-3.0
【解决方案1】:
我想,您需要创建llvm::raw_string_ostream 的实例并将您的 std::string 传递给它的构造函数。现在您可以将其用作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();