如何将double转换为const char,然后将其转换为double?Double到Const Char *
我想要将double转换为字符串,通过fputs将其写入文件,然后当我读取文件时,需要将其转换回double。
我正在使用Visual C++ 2010 Express Edition。
如何将double转换为const char,然后将其转换为double?Double到Const Char *
我想要将double转换为字符串,通过fputs将其写入文件,然后当我读取文件时,需要将其转换回double。
我正在使用Visual C++ 2010 Express Edition。
如果你只想写的double
值到文件,你可以简单地写出来,没有它们转换成const char*
。将它们转换成const char*
是矫枉过正的。
只需使用std::ofstream
为:
std::ofstream file("output.txt")'
double d = 1.989089;
file << d ; // d goes to the file!
file.close(); //done!
谢谢!我真的不知道这是可能的,大声笑。我只用C++工作了几天。 –
既然你加入C++将自己的代码,我建议你使用std::stringstream
:
#include <sstream>
stringstream ss;
ss << myDouble;
const char* str = ss.str().c_str();
ss >> myOtherDouble;
您应该添加,在对非const成员函数的任何调用之后,指针不应被视为有效。 – lccarrasco
您可以使用这些功能的转换和从:
template <class T>
bool convertFromStr(string &str, T *var) {
istringstream ss(str);
return (ss >> *var);
}
template <class T>
string convertToStr(T *var) {
ostringstream ss;
ss << *var;
return ss.str();
}
例子:
double d = 1.234567;
string str = convertToStr<double>(&d);
cout << str << endl;
double d2;
convertFromStr<double>(str, &d2);
cout << d2 << endl;
使用此funcition:
const char* ConvertDoubleToString(double value){
std::stringstream ss ;
ss << value;
const char* str = ss.str().c_str();
return str;
}
如果你使用C++,你真的想使用char和fputs吗? –
更好地使用二进制文件,而不是文本文件并存储双“原样”。然后阅读它“原样”。确保文件的“结构”不会改变。 – Ajay
我想支持Ajay所说的:使用二进制文件并将双精度数据存储为双精度数据,而不是将它们转换为十进制表示法(如果仅仅是因为这可能会导致舍入误差!能够以字符串形式将其写入文本文件。 – leftaroundabout