所以我想将一个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会不断发现我的想法。
答案 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"});
}