0
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
#define attr_size 3
int main(){
const char* attr[attr_size];
int i=0;
for(i=0;i<attr_size;i++){
char* t=(char*)malloc(sizeof(int));
sprintf(t,"%d",i);
string temp="attr";
temp+=t;
attr[i]=temp.c_str();
cout<<attr[i]<<endl;
free(t);
}
for(i=0;i<attr_size;i++){
cout<<attr[i]<<endl;
}
}
,其結果是:有關C++ char *的錯誤代碼。任何身體視圖?
attr0
attr1
attr2
attr2
attr
attr2
其實,我想要得到的結果是:
attr0
attr1
attr2
attr0
attr1
attr2
也許有毛病循環。有人幫助我嗎?
「只要字符串對象本身有效」實際上c_str()的結果可以比這更早地失效。調用任何非const成員函數或將非const引用傳遞給任何庫函數的字符串都會使結果無效。 – bames53
@ bames53好,我重新解釋了答案。 –
當然,但我想返回一個const char * attr。不返回一個字符串。 – tonymiao