我试图将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是检查我的字符串是否正确,情况并非如此。 缓冲区被正确打印,但ret给了我一些奇怪的迹象,我既不能阅读也不能在这里重现。
有没有人发现我的代码有问题?
由于
答案 0 :(得分:2)
ret
不是char*
。但是,printf
的{{1}}说明符需要%s
(即C样式字符串)。
您可以将char*
与printf
一起使用(这会使您的字符串不必要,因为您将其转换回char数组)或C ++输出工具:
ret.c_str()
答案 1 :(得分:1)