我是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;
}
所以我要做的就是使用这些变量并将它们输出到文本文件中。另外,请告知我需要用于此源代码的包含。请随意提供有关如何以其他方式改进我的代码的建议。
提前致谢。
答案 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