2011-02-10 10 views
0

これは非常に単純な質問ですが、私は、私は別の答えを得る見てどこ(それが変わったのか、C++ 0xの中で変化しますので、これで?):C++テキストファイルI/O

C++ではどのように私はテキストファイルから2つの数字を読み込んで別のテキストファイルに出力しますか? さらに、入力ファイルはどこに配置しますか?ちょうどプロジェクトのディレクトリに?そして、すでに出力ファイルが必要ですか?それとも、創造されるのだろうか?

+0

実行可能ファイルが実行される入力ファイル - >フォルダー。出力ファイルは自動的に作成されます。 – DumbCoder

+1

複数の同様の質問、つまりhttp://stackoverflow.com/questions/4808127/c-text-file-reading http://stackoverflow.com/questions/3825553/convert-hex-string-to-hex-value - 私あなたは自分自身を良いことを提案する[book](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) –

答えて

2

これはさまざまな方法があるため、おそらく異なる回答になります。

読書と二つの数字を書くことは非常に簡単になります

std::ifstream infile("input_file.txt"); 
std::ofstream outfile("output_file.txt"); 

int a, b; 
infile >> a >> b; 
outfile << a << "\t" << b; 

あなたは(明らかに)実際のテキストファイルの名前で「input_file.txt」を交換する必要があります。必要に応じて、ファイルを絶対パスまたは相対パスで指定することができます。パスではなくファイル名のみを指定すると、現在のディレクトリ(実行可能ファイルを含むディレクトリと同じであってもなくてもかまいません)でファイルが検索されます。

上記のように書き込み用にファイルを開くと、既定では既存のデータはすべて消去され、書き込むものと置き換えられます。その名前のファイルがない場合(そしてファイルのパスを指定できる場合)、新しいファイルが作成されます。また、既存のファイルの末尾に新しいデータを追加する追加モード、または既存のデータを読み込んで新しいデータを書き込む更新モード(std::fstreamの場合)を指定することもできます。

+0

私はこれを動作させることができません:私はすべて出力ファイルで00です。入力のパスを指定するにはどうすればよいですか? –

+0

気にしない、私はそれを別のエディタを使って動作させました。 xcodeが入力ファイルを期待している場所についてちょっと変わったところ –

+0

あなたはセパレータなしでintを書くでしょう。出力ファイルで1,2,3と1,2,3を区別することはできません。 – etarion

1

プログラムがフィルタである場合、つまりどこかのものを読み込み、別の場所に出力する場合、名前付きファイルの代わりに標準入力と標準出力を使用すると便利です。シェルリダイレクションを簡単に使用してファイルを使用し、すべてのファイル操作を処理するためにプログラムを保存することができます。

#include <iostream> 

int main() 
{ 
    int a, b; 
    std::cin >> a >> b; 
    std::cout << a << " " << b; 
} 

次にシェルから使用してください。

> cat my_input_file | my_program > my_output_file 
+0

セパレータなしでintを書きます。出力で1,2,3と1,2,3を区別することはできません。 – etarion

+0

@etarion:修正されました。ありがとう。 –

0

実行可能ファイルと同じフォルダに入れます。または、ファイルパスを使用してそのファイルパスをポイントすることもできます。

存在しない場合は作成できます。