• 締切済み

C++のstringクラスとファイルの入出力について

C言語では入出力はfopen,fcloseなど, 文字列の扱いも,char型の配列にfgets…なんとなく使いづらかったので, C++のstringクラスが便利だと聞き,勉強しています。 主にネットで"string 配列 入出力"などで検索しながら探しています。 自分で作成したデータファイル"ex.txt"を読み込み, 用意した配列"data[i]"に代入して,その後色々処理をしたいと思います。 //ex.txt A 2 0 1.0 B 1 2 10.0 C 1 0 100.0 という,"名前 番号1 番号2 数値データ"という4つの情報を"data[i]"に入れ,for文でA~Cまで配列を作りたいです。 後に,名前と番号,数値を切り離して処理したいです。 とりあえず某サイトを見よう見まねで以下のプログラムを書きました。 #include <fstream> #include <string> #include <iostream> using namespace std; int main(){ ifstream ifs( "ex.txt" ); string str; ifs >> str; cout << str << endl; return 0; } Visual C++のコンソールアプリケーションでデバッグなしで実行させると 単に,"A"と一文字しか出力されませんでした。 正直,動作もなにもわからず書いただけです。 C++のstringクラスを用いて,先の"ex.txt"の内容を, ファイルから読み込んで,画面に表示させるプログラムを教えてください。 よろしくお願いします。

みんなの回答

  • GOOD-Fr
  • ベストアンサー率32% (83/256)
回答No.3

string とか ifstream とか、そういう話以前の問題ですね。 C では「char型の配列が使いづらかった」とか言ってますが、使いづらかったのではなくて、使えなかった、の間違いでは?こんなプログラム書く人が「C ならばっちり」なんてありえません。 > 正直,動作もなにもわからず書いただけです。 じゃあ、わかってから質問してください。 あなたがなにがわからないのかわからないのですから、他の人にわかるはずがありません。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

一応、もう少し補足しておきます。 stringを使うのであれば、元のコードで問題ありません。 しかし、>> を使うと空白類文字で分離されてしまいます。 空白類文字で分離した内容を読み取るには、必要な回数だけ繰り返さなければなりません。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> C++のstringクラスを用いて,先の"ex.txt"の内容を, > ファイルから読み込んで,画面に表示させるプログラムを教えてください。 それだけでよいのであれば、stringなんか必要ありません。 cout << ifs.rdbuf() << endl; とすればOKです。

関連するQ&A

専門家に質問してみよう