c++ - 如何在创建字符串之前测量字符串的长度形成一个整数

标签 c++ c++11

我得到了一个数字列表(intdouble),我需要将其作为字符串导出到缓冲区。缓冲区必须事先保留。出于速度和大小的原因,我不想创建字符串、测量其大小,然后再次将其创建到缓冲区中。不,使用的系统不允许创建整个字符串并在之后复制它。

最佳答案

对于整数,您需要 floor(log10(number)) + 1 十进制数字(调整为 0 并根据需要签名)。

对于 double ,情况有点复杂——这实际上取决于你想如何表现他们。最重要的是,您介意在小数点后添加 0 吗?科学记数法是一种选择吗?

解决此问题的一种方法是:您需要 17 decimal digits after the decimal point在字符串中表示 IEEE double,以便可以明确地重建它。所以总是保留这 17 位数字,加上句点,并使用上面的整数公式作为整数部分。

关于c++ - 如何在创建字符串之前测量字符串的长度形成一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26524108/

相关文章:

c++ - opencv 3.1 的静态库在哪里

C++ 错误字符分配

c++ - 绘制多个对象

c++ - 编写 JSON 解释器的设计问题

c++ - 为什么我不能在我的程序中使用 "file_ptr>>variable"从文件中读取?

c++ - 定义类 X 的析构函数,它继承自指向对象 Y 的指针 vector 并具有指向 Z 的指针数组

c++ - 在不加入的情况下启动多个线程

c++ - 是否可以从函数返回 std::initializer_list ?

c++ - 自定义分配器兼容性

c++ - 编译器会在 setter 方法中自动应用 move 语义吗?