gpt4 book ai didi

c++ 字符串数组初始化

转载 作者:IT老高 更新时间:2023-10-28 21:46:24 29 4
gpt4 key购买 nike

我知道我可以在 C++ 中做到这一点:

string s[] = {"hi", "there"};

但是有没有办法在不删除 string s[] 的情况下以这种方式删除数组?

例如

void foo(string[] strArray){
// some code
}

string s[] = {"hi", "there"}; // Works
foo(s); // Works

foo(new string[]{"hi", "there"}); // Doesn't work

最佳答案

在 C++11 中可以。事先说明:不要 new 数组,没有必要这样做。

首先,string[] strArray 是一个语法错误,应该是 string* strArraystring strArray[]。而且我认为这只是为了示例,您没有传递任何大小参数。

#include <string>

void foo(std::string* strArray, unsigned size){
// do stuff...
}

template<class T>
using alias = T;

int main(){
foo(alias<std::string[]>{"hi", "there"}, 2);
}

请注意,如果您不需要将数组大小作为额外参数传递会更好,幸好有一种方法:模板!

template<unsigned N>
void foo(int const (&arr)[N]){
// ...
}

请注意,这只会匹配堆栈数组,例如 int x[5] = ...。或者临时的,通过使用上面的 alias 创建的。

int main(){
foo(alias<int[]>{1, 2, 3});
}

关于c++ 字符串数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9626722/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com