VC++6で
ファイルの中の文章の変換をやっています。
改行コードを見つけたいのですが、
どのようにすればいいのでしょうか?
また、自分が付け加える文字列に
改行自身も入れたいのですが、
例えば下記で、
** 0004とか** 0005
の後に、次の//が続くのではなく、
改行を入れた上で、
続けたいのです。
どうすれば?
** 0004//
** 0005//
**
0006// - Function
** 0007// Compute
Frequency Characteristics from Wavewforms by Each Time-Frame
** 0009
前者は一文字ずつ読み込んで改行を見つければいいのでは。
そんなやり方めんどくさい!嫌だ!!ってなら
後者の変換処理を含め環境を新しくしてboost::regexって手もあります。
VC6だとregexは使えなかったはず。
http://homepage3.nifty.com/kaku-chan/boost/regex/chapter_003.html
が参考になりますかね。
基本はtentekuさんが書かれたとおりでしょう。
一番単純な実装は一文字ずつチェックすると言う事になります。
ただ、ここで言っている改行と言うのが文字コードで何に当たるのか
と言う部分をきちんと決めないといけないと思いますけれど。
Windowsで一般的な例からいくとCR+LFになるのでしょう。
CRとLFって何って言う場合は、そこから調べる必要が有りますけれど。
この辺はファイルを開く時のモードとか色々絡むので
一概にどうせよとは言えないのです。
つまりその辺の関数回りの使い方から勉強しないといけないよ
と言う話になります。
VC++6.0の環境を使わないといけない理由がないのなら
新しい環境を使った方が良いような気もします。
VC++6.0のコンパイラはC++言語の規格に対する準拠率が低かったので
最近のC++言語の文法書ではできる事が出来なかったりします。
MFCを使う必要が無いのであれば、Express Editionと言う選択肢も
あるんですけどね。
うーーん、
1. 必要な領域をnew等で確保する。
2. ファイルのバイト数をチェックする。(多い場合はエラー終了)
3. 一バイトづつ0x0d,0x0aをチェックして削除する。
4. 改行が必要なところに0x0d,0x0aを挿入する。
5. 処理の終わった配列をそのままファイルに書き込む
ですかね?
まー、一行づつ読み込む方法もありますね。