Я пытаюсь преобразовать 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, чтобы проверить, если моя строка является правильной, что не правда дела. буфер печатается правильно, но ret дает мне некоторые странные признаки, которые я не могу ни читать, ни воспроизводить здесь.
Есть ли проблемы с моим кодом?
Благодаря
попытка fprintf (е, "буфер:% S ; ret:% s \ n ", & buffer, ret); – hanshenrik
'% s' не может использоваться с' std :: string'. try 'fprintf (..., ret.c_str());' – Shloim
@hanshenrik Нет, это неправильно. –