2011-06-19 28 views
7

Çifti bir const karakterine nasıl dönüştürebilirim ve sonra tekrar ikiye dönüştürebilirim?Double Const Char *

Çiftleri bir dizeye dönüştürmek, bir dosyaya fputs aracılığıyla yazmak istiyorum ve sonra dosyayı okuduğumda, yeniden çift haline dönüştürülmesi gerekecek.

Visual C++ 2010 Express Edition kullanıyorum. Eğer etiketlerine C++ eklendi yana

+0

Eğer C++ kullanıyorsan gerçekten char ve fputs kullanmak istiyor musun? –

+1

İkili dosyaları, metin dosyaları yerine ve "olduğu gibi" çiftini depolamak için kullanın. Sonra "olduğu gibi" okuyun. Dosyanın "yapısının" değişmediğinden emin olun. – Ajay

+0

Ajay'in söylediklerini desteklemek istiyorum: ikili dosyaları kullanmak ve çiftleri ondalık bir gösterime dönüştürmekten ziyade çiftler halinde depolamak çok daha etkilidir (eğer bu yalnızca yuvarlama hatalarını tanıtmak için yeterliyse!) dize formundaki bir metin dosyasına yazabilir. – leftaroundabout

cevap

6

, sadece, olmadan yazabilir const char* dönüştürerek . Bunları const char*'a dönüştürmek çok fazla. için ve dönüştürmek amacıyla

std::ofstream file("output.txt")' 

double d = 1.989089; 

file << d ; // d goes to the file! 

file.close(); //done! 
+3

Teşekkürler! Bunun mümkün olduğunu bilmiyordum, LOL. Sadece birkaç günlüğüne C++ ile çalışıyorum. –

8

, sana std::stringstream kullanmanızı öneririz: sadece dosyaya double değerlerini yazmak istiyorsanız

#include <sstream> 

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

Bir const olmayan üye işlevine yapılan herhangi bir çağrıdan sonra, işaretçi geçerli olarak kabul edilmemelidir. – lccarrasco

3

Sen bu işlevleri kullanabilirsiniz:

gibi std::ofstream kullanmak

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(); 
} 

Örnek:

double d = 1.234567; 
string str = convertToStr<double>(&d); 
cout << str << endl; 
double d2; 
convertFromStr<double>(str, &d2); 
cout << d2 << endl; 
1

bunu kullanın funcition:

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