C ++将字符串数组传递给函数

时间:2014-07-07 01:03:27

标签: c++

所以我想将一个std :: strings数组传递给一个函数。数组中std :: strings的数量是通过preproc预定义的。指令。整件事应该是这样的:

#define ARRAYSIZE 3
void foo(std::string[ARRAYSIZE]);
void foo(std::string instrings[ARRAYSIZE])
{
...
}

问题:我是否可以调用函数而不必先将std :: string数组保存到变量中,然后调用它?所以基本上我想用一行来称呼它,比如:

void main()
{
...
foo( std::string x[ARRAYSIZE] = {"abc","def","ghi"}  );
...
}

问题是我无法弄清楚函数调用的正确语法(我甚至不确定是否存在),visual studio的intellisense会不断发现我的想法。

2 个答案:

答案 0 :(得分:3)

如果你想切换到可以在问题评论中提到的即时构建的std::vector,这应该可行(与gcc一起使用):

void foo(const std::vector<std::string> &stringVec)
{
}

int main()
{
    foo( std::vector<std::string>({"abc","def","ghi"}));
}

答案 1 :(得分:1)

传递多个值(如{x0,x1,x2,...}}的一种方法是使用在c ++ 11中引入的std :: initializer_list。虽然这种方式不可能强制使用恒定数量的值。

void foo(const std::initializer_list<std::string>& input) {

}

int main() {
    foo({"abc","def","ghi"});
}