2011年12月9日金曜日

( Qt C++ )テキストデータの1行ごとの読込


今日は仕事で嫌なことがあった。
上司の命令は聞かなきゃならない。基本はね。だけど馬鹿正直になんでも聞いてると調子にのってくる。働いてる人はわかるだろう。巧妙に避けなきゃこんなもの身が持たないんだよね。取引先でもない知らない友達のパシリやれだぁ?お・こ・と・わ・り・で・す!
テメェのプライベートで勝手にやれっての! チョットぐらいだって?じゃあお前がやれっての。こんなこと言うと出来のいい洗脳社員は怒り狂うんだろうな...。「上司の指示は絶対だっ!」ってね。そりゃまともな給料なら文句はいわねぇよ。割りにあわねぇん......もういいや。

はい今日はテキストデータの1行ごとの読込です。sf-book.txtには"text string length"が記述されているものとします。ではコードを

QString str;
QFile file("sf-book.txt");

if (!file.open(QIODevice::ReadOnly))//読込のみでオープンできたかチェック
{
    return;
}

QTextStream in(&file);
str = in.readLine(0);//1行読込

説明不要なくらい簡単ですね。オープンして読込むだけです。ちなみにreadLineの引数は0だと行を任意の長さに、そのほかの値を入力すると入力した長さの文字列を取得できます。
例えば3にすると "tex"までを取得できます。一応リファレンスを


QString QTextStream::readLine ( qint64 maxlen = 0 )
一行テキストストリームから読込。行の長さはmaxlenに設定でき、これよりも長い行のストリームが含まれる場合は、それは分割される。(次の行という扱いになる。) 
もし、maxlenを0にした場合、それは任意の行の長さとなる。返される行が後続の行の終わりの文字を持たない ("\n" or "\r\n"), のでQString::trimmed()は呼ばなくてよい。
もし、末尾になったらnullが返される。atEnd()を使えば次に読み取るデータがあるかどうかチェックできる。(リファレンス

 以上です。明日は全読込です。その次はoperatorを使った独自クラス読込かな。

では。