2011-06-19 164 views
7

如何將double轉換爲const char,然後將其轉換爲double?Double到Const Char *

我想要將double轉換爲字符串,通過fputs將其寫入文件,然後當我讀取文件時,需要將其轉換回double。

我正在使用Visual C++ 2010 Express Edition。

+0

如果你使用C++,你真的想使用char和fputs嗎? –

+1

更好地使用二進制文件,而不是文本文件並存儲雙「原樣」。然後閱讀它「原樣」。確保文件的「結構」不會改變。 – Ajay

+0

我想支持Ajay所說的:使用二進制文件並將雙精度數據存儲爲雙精度數據,而不是將它們轉換爲十進制表示法(如果僅僅是因爲這可能會導致舍入誤差!能夠以字符串形式將其寫入文本文件。 – leftaroundabout

回答

6

如果你只想寫的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! 
+3

謝謝!我真的不知道這是可能的,大聲笑。我只用C++工作了幾天。 –

8

既然你加入C++將自己的代碼,我建議你使用std::stringstream

#include <sstream> 

stringstream ss; 
ss << myDouble; 
const char* str = ss.str().c_str(); 
ss >> myOtherDouble; 
+1

您應該添加,在對非const成員函數的任何調用之後,指針不應被視爲有效。 – lccarrasco

3

您可以使用這些功能的轉換和從:

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; 
1

使用此funcition:

const char* ConvertDoubleToString(double value){ 
    std::stringstream ss ; 
    ss << value; 
    const char* str = ss.str().c_str(); 
    return str; 
}