Cir*_*四事件 0 c++ string string-formatting
在c ++中执行此操作的最佳方法是什么(简言之,使用标准库并且易于理解):
std::string s = magic_command("%4.2f", 123.456f)
我知道为纯c建议的snprintf malloc组合
但使用c ++有没有更好,更简洁的方法呢?
我也知道建议的std :: ostringstream方法
但我想传递ac格式字符串,如"%4.2f",我找不到用ostringstream这样做的方法.
小智 8
你可以尝试Boost.Format:
std::string s = boost::str(boost::format("%4.2f") % 123.456f);
它没有包含在标准中,但Boost与非标准库一样标准.
C++完全放弃了格式字符串的概念,因此没有标准的方法来实现它.但是,您可以magic_command使用asprintf(vasprintf实际上是它的变体)实现自己.
请注意,这*asprintf是GNU/BSD扩展.因此,它们不存在于Windows上.此外,此解决方案不是类型安全的,并且只接受POD类型(因此没有类,结构或联合).
std::string magic_command(const std::string& format, ...)
{
    char* ptr;
    va_list args;
    va_start(args, format);
    vasprintf(&ptr, format.c_str(), args);
    va_end(args);
    std::unique_ptr<char, decltype(free)&> free_chars(ptr, free);
    return std::string(ptr);
}
| 归档时间: | 
 | 
| 查看次数: | 906 次 | 
| 最近记录: |