用C++复制字符串数组

Waw*_*100 2 c++ arrays string

我有一个string类型的变量数组.就像是:

std::string Array1[3] = {"A","B","C"}; 
Run Code Online (Sandbox Code Playgroud)

我想将这个数组的内容复制到另一个数组中:

std::string Array2[3]; 
Run Code Online (Sandbox Code Playgroud)

目前我使用循环来做到这一点.有没有更简单/替代的方式?如果我按如下方式声明和初始化变量:

if( ... check some condition ... ) 
{
    .
    .
    std::string Array1[3] = {"A","B","C"}; 
}  
Run Code Online (Sandbox Code Playgroud)

一旦离开if语句的范围,它显然会被销毁.有没有办法避免这种情况,以便以后可以在函数中使用它.理想情况下,我想避免声明变量Array1 global.

谢谢

Lig*_*ica 5

不,对于一系列复杂对象,您需要一个循环,或者您可以使用以下内容包装循环std::copy:

std::string Array1[3] = { "A", "B", "C" };
std::string Array2[3];
std::copy(Array1, Array1 + 3, Array2);
Run Code Online (Sandbox Code Playgroud)

但是,我建议使用更具规范性std::vector,具有原生分配(请参阅 SO答案以了解填充方法std::vector):

std::vector<std::string> Array1, Array2;
Array1.push_back("A"); Array1.push_back("B"); Array1.push_back("C");
Array2 = Array1;
Run Code Online (Sandbox Code Playgroud)

或者,至少,boost::array(std::array如果您使用的是C++ 0x,std::tr1:array或类似于最近的MSVS等具有TR1功能的工具链),这是一个静态分配的等价物,也可以分配:

using boost::array; // swap as appropriate
array<std::string, 3> Array1 = {{ "A", "B", "C" }}; // yes, I used two
array<std::string, 3> Array2 = Array1;
Run Code Online (Sandbox Code Playgroud)