将字符串2d数组传递给函数

时间:2014-01-25 12:11:48

标签: c++

我以下列方式将字符串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;
}

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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) ...