2011-03-16 20 views
0

这里是我的代码:简单的C++ cout陈述,一行格式问题,它是什么?

#include <iomanip> 
#include <fstream> 
#include <iostream> 
using namespace std; 

int main() 
{ 
    ifstream fin; 

    fin.open("Celsius.txt"); 

    if (!fin.good()) throw "I/O error"; 

    double myC; 
    fin >> myC; 

    fin.close(); 

    ofstream fout; 
    fout.open("Fahrenheit.txt"); 
    if (!fout.good()) throw "I/O error"; 

    double myAnswer = (myC * 1.80) + 32; 
    fixed; 
    cout << myC << " Celsius equals " << setprecision(3) << myAnswer << " Fahrenheit" << endl; 
    fout << myC << " Celsius equals " << setprecision(3) << myAnswer << " Fahrenheit" << endl; 

    fout.close(); 
} 

好吧,我只是缺少一些基本的完整神经元,我似乎有一些路障理解这一点。

  • 它-2格式的输入回波,并
  • 它-2不与一个十进制数字格式输出。
  • 不要格式化输入值只输出。

    fixed; 
    cout << myInput << " should not be formatted, but " << setprecision(3) << myOutput << " should be" << endl; 
    

那岂不是住宿:

myInput回音 和MyOutput中被格式化为一个十进制数未格式化的输入?

+2

这几乎是不可理解的。代码是否符合您的期望?问题是什么?什么是问题? – Beta 2011-03-16 04:02:28

+0

对不起,这是我必须写的这个程序的一个要求,我只是想了解规范。 – CodingIsAwesome 2011-03-16 04:29:04

+0

试图清理你的格式....还没有完全修复。 – abelenky 2011-03-16 04:30:25

回答

1

必须包括固定输出流中,像这样:

cout << myC << " Celsius equals " << fixed << setprecision(3) << myAnswer << " Fahrenheit" << endl; 

setprecision将指定小数点后的小数位的数量。所以3将会像72.000一样的数字,或者在你的情况下将1设置为72.0

+0

对不起,我的输出也必须格式化为1位数,也许我不明白setprecision()究竟做了什么?我认为它格式化了我的号码。 – CodingIsAwesome 2011-03-16 04:41:15

+0

编辑它以包含更多信息。 – Cody 2011-03-16 04:42:34

+0

@CodingIsAwesome:尝试'setprecision(1)' – 2011-03-16 04:44:14