常见得格式化方式
c标准库:
printf
printf_s
sprintf
sprintf_s
sscanf
宽字节:w
printf %S 表示宽字节
wprintf
swprintf
swscanf
wscanf
自定义宏_tscanf _stscanf _stprintf _stprintf_s 更多详见tchar.h
c++标准库:
cstdio.h
snprintf 将格式化输出写入到有大小限制的缓存中
vfscanf 从流中读取数据到可变参数列表中
vscanf 读取格式化数据到可变参数列表中
vsnprintf 从可变参数列表中写入数据到有大小限制的缓存中
vsscanf 从字符串中读取格式化数据到可变参数列表中
stringstream
template< typename... Args >
std::string string_sprintf(const char* format, Args... args) {
int length = std::snprintf(nullptr, 0, format, args...);
if (length <= 0) {
return "";
}
char* buf = new char[length + 1];
std::snprintf(buf, length + 1, format, args...);
std::string str(buf);
delete[] buf;
return std::move(str);
}
boost库:
format
示例:
std::cout << boost::format("%|1$1| %|2$3|") % "Hello" % 3 << std::endl;
std::cout << boost::format("%#x") % 0x1 << std::endl;
std::cout << boost::format("(x,y) = (%1$+5d,%2$+5d) \n") % -23 % 35; // Posix-Printf style
std::cout << boost::format("%1%,%|6t|%2%") % "test" % 123 << std::endl;
//test, 123