2

私は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;
}

だから私がやろうとしているのは、それらの変数を使ってテキストファイルに出力することです。また、このソースコードに使用する必要のあるインクルードについて教えてください。他の方法でもコードを改善する方法について、遠慮なく提案してください。

前もって感謝します。

4

6 に答える 6

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

これを試してみませんか?

于 2009-09-04T10:29:35.567 に答える
1

doubleのオーバーロードされた定義(basic_ostreamで定義されている)を持つストリーム書き込み演算子operator<<を使用するだけです。

#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;
于 2009-09-04T10:32:21.897 に答える
0

最初の質問に答えるには、Cでprintfを使用します(ファイル出力にはfprintfを使用します)。IIRC、coutにも多数の修飾子がありますが、最初にfstream(C++よりも「C」中心)について言及したので、それらについては言及しません-


おっと、ofstreamインジケーターを見逃し、「C」コメントを無視してC++を使用します


プログラムを改善するために、上記のように計算を行うときは、かっこをよく使用して、物事が希望どおりに評価されるようにします(優先順位に依存しないでください)。

于 2009-09-04T10:31:10.137 に答える
0

一般的に、出力に書き込む方法は、printf、wprintfなどです。

ファイルの場合、これらのメソッドはfprintf_s、fsprintf_sなどの名前が付けられます。

'_s'メソッドは、以前のフォーマットメソッドの新しい安全なバリエーションであることに注意してください。これらの新しい安全なバージョンを常に使用する必要があります。

例については、http: //msdn.microsoft.com/en-us/library/ksf1fzyy%28VS.80%29.aspxを参照してください。

これらのメソッドは、フォーマット指定子を使用して、特定のタイプをテキストに変換することに注意してください。たとえば、%dは整数のプレースホルダーとして機能します。同様に、doubleの場合は%f。

于 2009-09-04T10:31:15.627 に答える
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();
}
于 2009-09-04T10:32:57.027 に答える
0

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

于 2009-12-15T12:26:35.807 に答える