如何将boost :: uintmax_t转换为std :: string

时间:2013-01-29 08:13:23

标签: c++ boost

boost::filesystem::file_size()返回boost::uintmax_t。那么,如何将boost::uintmax_t转换为std::string

1 个答案:

答案 0 :(得分:1)

嗯,你可以使用一些简单的方法,如:

boost::lexical_cast<std::string>(size);

或手动使用stringstream:

static_cast<std::stringstream>(std::stringstream() << size).str()

数字运算符是成员,因此即使在C ++ 03中它也应该是临时的;其他一些重载是自由函数,而在C ++ 03中则不接受临时函数,但你可以使用std::stringstream().flush(),它返回 lvalue 引用,而不是所有operator<<重载工作

但这不仅仅是简单的数字。它的文件大小。因此,您很可能应该将其舍入并处理kB / MB / GB / KiB / MiB / GiB单位。在这种情况下,请查看libkibi