gpt4 book ai didi

c++ - 常量字符数组*

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:32 25 4
gpt4 key购买 nike

我正在编写一个 C++ 程序,该程序使用 RRD 库,这些库的函数需要一个“const char*”数组。我以为我可以只声明数组,然后初始化数组的每个元素,但改变一个,就会改变所有的元素。显然我错过了一些东西。这是一个与我正在编写的代码类似的示例(即它表现出相同的问题)。

string intToString(long i)
{
stringstream ss;
string s;
ss << i;
s = ss.str();
return s;
}

int main(){
const char* av[5];
int i = 0;
int j = 0;
for(i=0;i<5;i++){
j= 0;
av[i] = intToString(i).c_str();
for(j=0;j<5;j++){ cout << j << " : " << av[j] << endl;}
}

}

如有任何帮助,我们将不胜感激。

最佳答案

c_str() 返回的 const char* std::string 的方法指向 std::string 拥有的缓冲区,并且仅在下一次调用 std 的变异方法之前保持有效::字符串。如果要保留此缓冲区的内容,则需要将其内容复制到其他地方。

编辑:或者,您可以保留一个 std::string 数组来管理字符串的存储并临时存储 c_str() 接口(interface)所需的 const char* 并行数组中的指针。这避免了复制字符串或手动释放拷贝的需要。在任何情况下,重要的是不要更改任何 std::string 当您持有 const char* 之前调用 c_str()< 返回的值时.

关于c++ - 常量字符数组*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1415680/

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