如何在C ++中将声明为double的变量输出到文本文件中

时间:2009-09-04 10:12:50

标签: c++ iostream fstream

我是C ++的新手,我想知道如何输出/写入声明为double的变量到txt文件。我知道如何使用fstream输出字符串,但我无法弄清楚如何发送任何其他内容。我开始认为你不能发送任何东西,但字符串到文本文件是正确的吗?如果是这样,那么如何将存储在变量中的信息转换为字符串变量?

这是我的代码,我正在尝试将此概念实现,它非常简单:

int main()
{

double invoiceAmt = 3800.00;
double apr = 18.5;            //percentage

//compute cash discount
double discountRate = 3.0;    //percentage
double discountAmt;

discountAmt = invoiceAmt * discountRate/100;

//compute amount due in 10 days
double amtDueIn10;

amtDueIn10 = invoiceAmt - discountAmt;

//Compute Interest on the loan of amount (with discount)for 20 days
double LoanInt;

LoanInt = amtDueIn10 * (apr /360/100) * 20;

//Compute amount due in 20 days at 18.5%.
double amtDueIn20;

amtDueIn20 = invoiceAmt * (1 + (apr /360/100) * 20);
return 0;
}

所以我要做的就是使用这些变量并将它们输出到文本文件中。另外,请告知我需要用于此源代码的包含。请随意提供有关如何以其他方式改进我的代码的建议。

提前致谢。

6 个答案:

答案 0 :(得分:6)

正如您的标记所示,您使用文件流:

std::ofstream ofs("/path/to/file.txt");
ofs << amtDueIn20;

根据您需要的文件,您可能需要编写更多内容(如空格等)才能获得合适的格式。

由于rmagoteaux22正在出现的问题,

编辑

此代码

#include <iostream>
#include <fstream>

const double d = 3.1415926;

int main(){
    std::ofstream ofs("test.txt");
    if( !ofs.good() ) {
        std::cerr << "Couldn't open text file!\n";
        return 1;
    }
    ofs << d << '\n';
    return 0;
}

为我编译(VC9)并将其写入test.txt

3.14159

你能试试吗?

答案 1 :(得分:1)

只需使用流写操作符运算符&lt;&lt;它具有double的重载定义(在basic_ostream中定义)

#include <fstream>

...


    std::fstream stmMyStream( "c:\\tmp\\teststm.txt", std::ios::in | std::ios::out | std::ios::trunc );

    double dbMyDouble = 23.456;
    stmMyStream << "The value is: " << dbMyDouble;

答案 2 :(得分:0)

要回答您的第一个问题,请在C中使用printf(以及文件输出fprintf)。 IIRC,cout也有很多修饰符,但我不会像你最初提到的那样提到fstream(比C ++更中心'C') -


oops,错过了ofstream指标,忽略了我的'C'评论并使用了C ++


要改进你的程序,一定要在进行上述计算时大量使用括号,以确保按照你希望的方式评估事物(不要依赖于优先顺序)

答案 3 :(得分:0)

一般来说,写入输出的方法是printf,wprintf等。

如果是文件,这些方法命名为fprintf_s,fsprintf_s等。

请注意,'_ s'方法是以前格式化方法的新安全变体。您应该始终使用这些新的安全版本。

有关示例,请参阅: http://msdn.microsoft.com/en-us/library/ksf1fzyy%28VS.80%29.aspx

请注意,这些方法使用格式说明符将给定类型转换为文本。例如,%d充当整数的占位符。同样%f为double。

答案 4 :(得分:0)

只需在输出流上使用<<运算符:

#include <fstream>

int main() {
  double myNumber = 42.5;
  std::fstream outfile("test.txt", std::fstream::out);
  outfile << "The answer is almost " << myNumber << std::endl;
  outfile.close();
}

答案 5 :(得分:0)

我遇到了完全相同的问题,ofstream正在输出字符串,但是一旦到达变量就停止了。通过谷歌搜索,我在论坛帖子中找到了这个解决方案:

在Xcode 3.2下,在基于stdc ++项目模板创建新项目时,Debug配置的目标构建设置添加了与gcc-4.2不兼容的预处理器宏: _GLIBCXX_DEBUG = 1 _GLIBXX_DEBUG_PEDANTIC = 1

如果希望Debug / gcc-4.2正确执行,请销毁它们。

http://forums.macrumors.com/showpost.php?p=8590820&postcount=8