あなたを修正したかっただけで、あなたが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行だけ)、出力します。それはここからかなり簡単なはずです。がんばろう!
コードをインデントして読み込み可能にしました –
これは[ストリーム入力](http://en.cppreference.com/w/cpp/string/basic_string/operator_ltltgtgt)の仕組みです。行全体が必要な場合は、['std :: getline'](http://en.cppreference.com/w/cpp/string/basic_string/getline)を代わりに使用してください。 –
大量の場合、読み込む量を指定できる 'std :: istream :: read'があります。 –