我试图将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不,这是不正确的。 –