c++ - 字符串连接 C++

标签 c++ concatenation

给定一个任意的 float ,比如说-0.13,假设我们有一个算法可以为这个数字一个一个地计算一个已知长度L的二进制字符串,从左到右。

(我需要做这个计算来计算粒子的 Morton Key 排序(给定的坐标),这反过来用于构建八叉树。我正在创建 每个 x、y、z 维度的二进制字符串)

首先创建长度为 L 的字符数组,然后将此数组转换为字符串是否更好/更有效?即

char ch[L];

for(i = 0; i < L; ++i)
{
    // calculation of ch[i]
}

//convert array into string

或者从一个空字符串开始,然后将一个新的计算位连接到字符串中是否更好/更有效。即

string s = "";

for(i = 0; i < L; ++i)
{
    // calculation of ch[i]
    s = s + string(ch);
}

最佳答案

为什么不两者都做呢?

std::string myStr(L);

for(i = 0; i < L; ++i)
{
    // calculation of ch[i]
    myStr[i] = ch;
}

这将创建一个具有给定大小的 std::string。然后你只需设置每个字符。这将在您可以事先准确知道大小的情况下起作用。

或者,如果您想要安全的东西,即使您必须添加超过 L 个字符:

std::string myStr;
myStr.reserve(L);

for(i = 0; i < L; ++i)
{
    // calculation of ch[i]
    myStr.push_back(ch);
}

std::string::reserve 预分配存储空间,但 push_back 将在需要时分配更多空间。如果您不超过 L 个字符,那么您将只会获得一个初始分配。

关于c++ - 字符串连接 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7327070/

相关文章:

c++ - Boost Spirit 中 > 和 >> 的区别

excel - 如何连接单元格值,直到它在 Excel 中找到一个空白,然后在段落的第一行返回结果?

c++ - 使用组合框在qt对话框中切换不同的表

c++ - 跟踪内存泄漏

python - 使用相同的索引 pandas 按行合并两个数据帧

mysql - SQL:连接问题

Lua 中的字符串操作/处理,字符串中单词的旋转

r - 如何为数据框中的每个元素附加一个序号?

c++ - 长时间运行的 C++ 应用程序中的内存泄漏

c++ - 如何在 C++ 中标记字符串?