C++ 2d char数组到字符串

use*_*346 1 c++ arrays char

如何将2d char数组转换为字符串?

 int main()
{
   char foo[3][3] = {{'a','b','c'}, {'d','e','f'},{'g','h','i'}};
   string bar;
   bar = foo;
   cout<< bar; //abcdefghi

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

你也可以只将2d数组的选定部分转换成字符串吗?

 int main()
{
   char foo[3][3] = {{'a','b','c'}, {'d','e','f'},{'g','h','i'}};
   string bar;
   bar = foo[0][1] + foo[1][2] + foo[2][0];
   cout<< bar; //bfg (bar contains only b, f, and g)

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 7

您可以使用2D数组中的元素是连续的事实,以及以下的双迭代器构造函数std::string:

char foo[3][3] = {{'a','b','c'}, {'d','e','f'},{'g','h','i'}};
std::string bar(&foo[0][0], &foo[2][2]+1);
std::cout << bar << std::endl; // abcdefgi
Run Code Online (Sandbox Code Playgroud)

这里&foo[0][0]是指向第一个元素&foo[2][2] + 1的指针,是指向最后一个元素的指针.指针是迭代器.