繁体   English   中英

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

[英]How do you output variable's declared as a double to a text file in C++

我是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;
}

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

提前致谢。

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

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

你能试试吗?

只需使用流写操作符operator <<,它具有一个重载的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;

要回答第一个问题,请在C语言中使用printf(对于文件输出fprintf)。 IIRC,cout也具有大量的修饰符,但是正如您最初提到的fstream(比C ++更为“ C”为中心),我不会提及它们-


糟糕,错过了ofstream指标,请忽略我的“ C”注释并使用C ++


为了改进您的程序,请确保在进行上述计算时使用很多括号,以确保100%按照您希望的方式评估事物(不依赖优先级)

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

对于文件,这些方法被命名为fprintf_s,fsprintf_s等。

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

有关示例,请参考: http : //msdn.microsoft.com/zh-cn/library/ksf1fzyy%28VS.80%29.aspx

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

只需在输出流上使用<<操作符:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM