二维字符数组到一维字符串数组

时间:2021-03-15 14:16:09

标签: c++ arrays string char

在 C++ 中将二维字符数组复制到一维字符串数组的最简单方法是什么?

类似的东西:

    char inCharArray[3][255];
    string outStringArray[3];

    for (int i = 0; i < sizeof(inCharArray) / sizeof(inCharArray[i]); i++)
    {
        outStringArray[i] = inCharArray[i];
    }

问候 提尔曼

2 个答案:

答案 0 :(得分:1)

使用 STL 算法是最好的方法之一。

char inCharArray[3][255];
string outStringArray[3];

std::transform(
    std::begin(inCharrArray),
    std::end(inCharArray),
    std::begin(outStringArray),
    [](char const* c_str) -> std::string {
        return std::string{c_str};
    }
);

这是假设字符串的结尾早于 255。

答案 1 :(得分:0)

std::transform 的这个替代方案对我来说更具可读性:

std::copy(std::begin(inCharArray),
          std::end(inCharArray),
          std::begin(outStringArray));

// only safe if input strings are null-terminated and arrays have equal size
static_assert(std::size(inCharArray) == std::size(outStringArray),
              "arrays are not equal size");

在编写 C++ 代码时,还可以考虑使用 std::array 而不是 C 风格的数组。