2014-01-25 61 views
1

我以如下方式将字符串2d数组传递给函数。这是正确的还是可以做得更好?将字符串2d数组传递给函数

#include<iostream> 
#include<string> 
using namespace std; 

void print_name(string name[]) 
{ 
    cout<<name[0]; 
} 

int main() 
{ 
    string name[4]; 
    name[0] = "abc"; 
    name[1] ="xyz"; 
    name[2] = "pqr"; 
    name[3]= "xyq"; 

    print_name(name); 
    return 0; 
} 
+0

这样比较好把它看作是一个字符串数组,而不是一个二维数组,即使一个字符串基本上是一个数组。 – Dani

+1

我在这里没有看到任何问题。也许最好在这里使用'vector name(4)'。 – herohuyongtao

回答

2

在C++中更好的方法是通过一个std::vector作为参数。

void print_name(const std::vector<std::string>& name) 

std::vector<std::string> name{"abc", "xyz","pqr","xyq"}; 

print_name(name); 
+0

'const'在这里需要吗?即使没有'const',你也不能改变它,对吗? – herohuyongtao

+0

@ herohuyongtao错过了参考。 –

+0

为什么不简单地'void print_name(vector name)'? – herohuyongtao

1

与通过C风格数组的问题是,您调用函数不知道它在哪里结束。如果你必须使用一个固定大小的数组,更好的办法是通过std::array<std::string,4>

void print_name(std::array<std::string,4>& names) ... 

如果使用std::vector<std::string>是可以接受的,它会给你的代码更灵活:

void print_name(std::vector<std::string>& names) ... 

如果没有上面的作品适合你,考虑将阵列物品的数量与阵列一起传递,以便你的print_name知道它可能得到的物品如何:

void print_name(std::string names[], int count) ... 
+0

嗯我认为,你是正确的我应该使用矢量字符串... Thx很多为您的回应。 – user765443