这些是将 printf 的输出设置为字符串的一种方法吗?
Is these a way to set the output of printf to a string?
我需要将printf("%02X", buffer[0])
的输出放入字符串中。
理论上,它会是这样的:
string str = printf("%02X", buffer[0]) +printf("%02X", buffer[1]) +printf("%02X", buffer[2]) +printf("%02X", buffer[3]);
但是,这行不通,我不知道该怎么做。
任何帮助不胜感激,谢谢。
printf
的返回值是写入的字符数,使用 snprintf
:
char s[BIG_ENOUGH];
snprintf(s, BIG_ENOUGH, "%02X %02X %02X %02X ", buffer[0],
buffer[1],
buffer[2],
buffer[3]);
std::string str(s);
此外,您可以忘记 xprintf 方式并使用C++流:
std::ostringstream s;
s << std::hex;
for (int i=0; i<4; i++)
s << std::setfill('0') << std::setw(2) << buffer[i] << ' ';
std::string str(s.str());
正如M
M.所写,sprintf就是你要找的。或者更好的是,使用 snprintf
来增加缓冲区溢出的安全性:
char s[SIZE];
snprintf(s, SIZE, "%02X", buffer[0]);
string str(s);
snprintf 永远不会向 s 写入超过 SIZE 的字节。
我发现 boost::format() 是在输出到流时保留 printf() 类型格式的好方法。 使用流后,可以使用 std::ostringstream 或类似于内存中的格式。
相关文章:
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 有没有一种方法可以在编译时获得作用域类名
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 在 c++ 中,有一种方法可以创建一个包含地图作为值的树状地图?
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 有没有一种方法可以捕获进程中的堆栈溢出?C++Linux
- 我想直接在结构中插入,但没有一种方法可以正确避免填充问题
- 类中一种方法的部分专用化
- 只需要知道我在c ++中打印模式的方式是否有效,或者有另一种方法可以有效地做到这一点
- 有没有一种方法可以忽略Qt c++中的文件名大小写敏感性?
- 有没有一种方法可以使用图形在C++中逐个字母地打印控制台中的文本
- 有没有一种方法可以将数据从javascript发送到exe文件
- 有没有一种方法可以从函数中返回一个新对象或对现有对象的引用
- 在C++中,有没有一种方法可以让我在不传递参数的情况下拥有一个函数
- 有没有一种方法可以使用SFINAE来检测一个类型是否实现了给定的抽象基类
- 有没有一种方法可以使用typedef中的参数名称
- C++中有没有一种方法可以通过指定列表中的每个成员变量来构造对象