10

llvm::Type2.9 和更早的版本曾经有getDescription方法来检索类型的字符串表示。此方法在 llvm 3.0 中不再存在。

我不确定这是否被弃用Type::print(raw_ostream&),但无论如何我对这个 API 感到好奇。有哪些关于如何使用它的例子?我怎样才能转储到stringor const char*

特别是,我想将Boost::Format现代 c++ 的字符串传递给它sprintf

4

1 回答 1

16

我想,您需要创建一个实例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();
于 2012-01-04T08:22:14.183 回答