プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。
C言語はある程度使えるつもりでいます。
現在C++を勉強中でして、ファイルのIO
のところをやっています。

が、テキストを1行読み込むというところで
つまずいています。
以下はそのソースです。


string LineData;
ifstream IFS;

IFS.open("hoge.txt", ios::in | ios::binary);
IFS >> LineData;


とした場合、LineData には hoge.txt の1行分が
格納されるのを期待していたのですが、
実際には、空白があるとそこで読み込みが切れてしまいます。

例.

hoge.txt の中身(※△は空白)
---------------------------
1行目AAABBB△CCCDDD
2行目AAABBB△CCCDDD
3行目AAABBB△CCCDDD
---------------------------

IFS >> LineData; で取得したときの LineData
---------------------------
1行目AAABBB
---------------------------


期待していたのは
---------------------------
1行目AAABBB△CCCDDD
---------------------------

別の方法で読み込みを行ったほうがよいのでしょうか?

A 回答 (4件)

getline を使うとか

    • good
    • 0

char buf[129];


IFS.getline(buf, 128);
とるす。
 内容は
NO1の方とおなじです。。。
    • good
    • 0

以下の記事が多少参考になるかもしれません。



http://www.ttoyota.com/msvcee/msvcee22.htm

いろいろあるようですね。
    • good
    • 0

operator>>()はホワイトスペースを区切りとします。

ホワイトスペースであればスペースも改行もタブも区別しません。
そうでなければintやdoubleを読み込むときに困ります。
1行を文字列として読み込みたいのならgetlineを使います。

で、getlineを使うなら普通にstringに読み込みましょう。

 getline( IFS, LineData );

※このgetlineは非メンバ関数です。
    • good
    • 0
この回答へのお礼

的確なご指摘ありがとうございました。
予定通りの動作を行うことができて
助かりました。

お礼日時:2006/03/28 13:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!