Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
boost::uint64\t是否有合适的格式化程序与snprintf一起使用? 我在C++项目中使用了 Boo/CSTDIt.HPP < /Cube >,因为我正在C++ 03模式编译( -STD= C++ 03 ),我想要固定宽度的整数(它们通过网络传输并存储到文件中)。我还使用了snprintf,因为它是格式化字符串的一种简单而快速的方法_C++_Boost_String Formatting - Fatal编程技术网

boost::uint64\t是否有合适的格式化程序与snprintf一起使用? 我在C++项目中使用了 Boo/CSTDIt.HPP < /Cube >,因为我正在C++ 03模式编译( -STD= C++ 03 ),我想要固定宽度的整数(它们通过网络传输并存储到文件中)。我还使用了snprintf,因为它是格式化字符串的一种简单而快速的方法

boost::uint64\t是否有合适的格式化程序与snprintf一起使用? 我在C++项目中使用了 Boo/CSTDIt.HPP < /Cube >,因为我正在C++ 03模式编译( -STD= C++ 03 ),我想要固定宽度的整数(它们通过网络传输并存储到文件中)。我还使用了snprintf,因为它是格式化字符串的一种简单而快速的方法,c++,boost,string-formatting,C++,Boost,String Formatting,是否有合适的格式化程序可与snprintf(…)一起使用boost::uint64\t,或者我应该切换到另一个解决方案(,std::ostringstream) 我目前正在使用%lu,但我对它不太满意,因为它可能无法在另一个体系结构上工作(其中boost::uint64\u t未定义为长无符号),无法达到使用固定宽度整数的目的 boost::uint64_t id id = get_file_id(...) const char* ENCODED_FILENAME_FORMAT = "encod

是否有合适的格式化程序可与
snprintf(…)
一起使用
boost::uint64\t
,或者我应该切换到另一个解决方案(,std::ostringstream)

我目前正在使用
%lu
,但我对它不太满意,因为它可能无法在另一个体系结构上工作(其中
boost::uint64\u t
未定义为
长无符号
),无法达到使用固定宽度整数的目的

boost::uint64_t id
id = get_file_id(...)
const char* ENCODED_FILENAME_FORMAT = "encoded%lu.dat";
//...
char encoded_filename[34];
snprintf(encoded_filename, 34, ENCODED_FILENAME_FORMAT, id);

snprintf
不是一个Boost函数。它只知道如何打印基本类型。如果这些都与boost::uint64\u t不一致,那么它甚至不可能打印出来


通常,正如您所注意到的,格式化程序必须与基础类型匹配。因此,即使可能,格式化程序也将依赖于平台。在C++11或C99中,Boost没有扩展机制可以向
snprintf

添加新的格式化程序,您有定义宏
PRIu64
的头
,它是
uint64\t
的合适格式化程序。我希望boost能提供类似的机制。64位无符号整数是一种基本类型。请参阅此SO帖子:@Xion345:这是标准库中的宏,应用于同一标准库。那容易多了。好吧,我现在明白你的意思了。我认为boost可以提供这种类型的机制,因为在大多数平台上,
uint64\t
unsigned
long unsigned
long long unsigned
的别名(因此存在这些类型的格式化程序)。因此,除了为
uint64\u t
提供正确的别名外,boost还可以为
PRIu64
提供正确的别名(无论是
%u
%lu
%llu
)。