2017-01-20 8 views
1
ここ

は私のコードで1つだけの単語使用するよりもテキストファイルに取りますかstr。どうしてこれなの?また、ファイル全体を取り込めるように修正するにはどうしたらいいですか?にはどうすれば

また、私が持っていた別の質問は、私は文字列の各文字や単語をループするforループを使用したい場合は、私が使うということでした。

for (int i=0; i<string.length(); i++) 

をしかし、私はをループしたい場合ファイルの最後の単語や文字に達するまでファイルを作成してください。どうすればこのことができますか? "test.txt" .length()またはTO_file.length()を使用できますか?あるいは、これを行う別の方法がありますか?

+1

コードをインデントして読み込み可能にしました –

+2

これは[ストリーム入力](http://en.cppreference.com/w/cpp/string/basic_string/operator_ltltgtgt)の仕組みです。行全体が必要な場合は、['std :: getline'](http://en.cppreference.com/w/cpp/string/basic_string/getline)を代わりに使用してください。 –

+1

大量の場合、読み込む量を指定できる 'std :: istream :: read'があります。 –

答えて

0

あなたを修正したかっただけで、あなたがtest.txtに送信した行全体が正常に到達しました。私はあなたのコードをテストしました。 の出力はですが、の行全体が実際にはというファイルに達していますか?

コード内の問題は、テキストファイルの読み方です。次の行を実行すると、strはstring型の変数であることを忘れてしまいます。文字列変数の入力を受け入れることを試みた場合、コンパイラは、空白文字の前に存在するものだけを受け入れます。という単語の後ろに1行あるようにします。たとえば、

「Hello there!」と入力すると、コンパイラは最初の単語(Hello)のみを変数sに格納します。同様に、関数内では、行の最初の単語だけがstr変数に転送されます。

test.txtを読むためにコードを書き直す必要があります。

 string line; // You store the string sentence in this variable 
     ifstream myfile ("example.txt"); // You open the file in read mode 
     if (myfile.is_open()) // If the file is successfully accessed and opened, then: 
     { 
     while (getline (myfile,line)) // Get every line from the file until you reach end of file 
     { 
      cout << line << '\n'; // Here you do whatever you want to do with the line from the file 
     } 
     myfile.close(); // Close the file at the end 
     } 

     else cout << "Unable to open file"; // If the file cannot open, print error message 

あなたのコードのミスがwhileループの状態で固定されています:私は、以下のcplusplus.comからサンプルテンプレートを提供します

 getline (myfile,line) 

よりもむしろ最初の単語を取得する簡単な、することができますファイル内の行全体を取得し(テキストファイル全体ではなく1行だけ)、出力します。それはここからかなり簡単なはずです。がんばろう!

+0

なぜgetline()の長さとして行を取っていますか –

+0

ああ、ありがとうが、whileループ条件にgetline(myfile、line) whileループの条件でも実際に行を取得しているのですか? –

+0

なぜgetlineで長さを長さにしたのか理解していますが、今度はファイル全体から読み込んだ行の読み込みを停止しますファイル?また、getlineは、入力文字が押されるまで入力を受け取り、これがファイルなので、入力は押されないため、ファイル全体が1つのgetlineにならないでしょう。 –