将double类型值写入文本文件

Aqu*_*irl 11 c++ file-io pointers

下面的代码是将不可读的字符写入文本文件:

int main () 
{
    ofstream myfile ("example.txt");

    if (myfile.is_open())
    {
        double value       = 11.23444556;
        char   *conversion = (char *)&value;
        strcat (conversion, "\0");

        myfile.write (conversion, strlen (conversion));
        myfile.close();
    }   

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想看看文件中写的实际数字:(请提示.

编辑 看到下面的答案,我将代码修改为:

int main () 
{
    ofstream myfile ("example.txt");

    if (myfile.is_open())
    {
        double value       = 11.23444556;

        myfile << value;
        myfile.close();
    }   

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这产生putput:11.2344而实际数字是11.23444556.我想要完整的号码.

编辑帖子以通知所有人: 不可读的字符是由于ofstream的写入功能:

这是一个未格式化的输出函数

该引用来自:http://www.cplusplus.com/reference/iostream/ostream/write/

Naw*_*waz 27

为什么不简单地这样做(在问题编辑后更新答案):

 #include <iomanip>

 myfile << std::fixed << std::setprecision(8) << value;
 myfile.close();
Run Code Online (Sandbox Code Playgroud)

现在,您可以看到文件中写入的实际数字.

请参阅文档std::setprecision.注意:您必须包含<iomanip>头文件.