我試圖將char []轉換爲std :: string。到處都是我看到的,我找到了相同的答案,字符串有一個構造函數來完成這件事。 問題是,它不適合我。如何將char []轉換爲std :: string
這裏是我的代碼:
std::string getKey(double xTop,double yTop,double zTop,double xBottom,double yBottom,double zBottom,double zGridPoint)
{
std::string outfile = correctPath(getCurrentDirectory().toStdString()) + "keys.txt";
FILE *f;
f= fopen(outfile.c_str(),"a");
char buffer[100];
double s;
if((zBottom-zTop) ==0)
{
sprintf(buffer,"%e %e %e", xTop, yTop, zTop);
}else
{
s=(zGridPoint - zTop)/(zBottom - zTop);
sprintf(buffer,"%e %e %e",xTop+ s*(xBottom - xTop), yTop+ s*(yBottom - yTop), zGridPoint);
}
std::string ret (buffer);
fprintf(f,"buffer: %s ; ret: %s\n",buffer,ret);
fclose(f);
return ret;
}
的fprintf中是檢查我的字符串是正確的,這isn't的情況。 緩衝區得到正確打印,但ret給我一些奇怪的跡象,我不能在這裏讀取或重現。
有沒有人看到我的代碼有問題?
謝謝
試試fprintf中(F,「緩衝區:%s的; ret:%s \ n「,&buffer,ret); – hanshenrik
'%s'不能與'std :: string'一起使用。嘗試'fprintf(...,ret.c_str());' – Shloim
@hanshenrik不,這是不正確的。 –