4 c++
我正在编写一个使用RRD库的C++程序,这些库需要一个'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;}
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
string::c_str返回临时指针.您可以使用strdup获取持久性指针.
// don't forget to release memory later
av[i] = strdup( intToString(i).c_str(); );
Run Code Online (Sandbox Code Playgroud)
或者您可以手动分配所有缓冲区,然后用于string::copy复制字符串数据.