在c++中将字符数组解包为字符串

Unpack char array to strings in c++

本文关键字:字符串 数组 字符 c++      更新时间:2023-10-16

必须有一种更优雅的方式将字符数组解包为字符串数组:

   void loadNames(int size, char *inp[])
   {
      size_t i;
      for (i = 0; i < size; i++){
          string s = ""
          while ( char(*inp[i]) != '' ) s.push_back(*inp[i]++);    
          cout << "String " << i << " = " << s.c_str() << endl;
      }
   }

任何线索-高度赞赏!

有一种简单的方法可以构建所有这些std::string并将它们放入std::vector(没有多余的副本):

std::vector<std::string> v(inp, inp+size);

这是vector的范围初始化式,与string的c-string初始化式结合使用。

使用std::vector<std::string>并使用其范围构造函数来填充它。然后遍历并打印每个字符串:

void loadNames(int size, char* inp[])
{
    std::vector<std::string> v(inp, inp + size);
    size = 0;
    for (auto&& x : v) {
        std::cout << "String " << ++size << x << std::endl;
    }
}

直接从char*构造

string s(inp[i]);
cout << "String " << i << " = " << s.c_str() << endl;