改行はどう発見する? – プログラミング – Home

通知
すべてクリア

改行はどう発見する?


改行を入れたい
 改行を入れたい
(@改行を入れたい)
ゲスト
結合: 14年前
投稿: 1
Topic starter  

VC++6で
ファイルの中の文章の変換をやっています。
改行コードを見つけたいのですが、
どのようにすればいいのでしょうか?
また、自分が付け加える文字列に
改行自身も入れたいのですが、

例えば下記で、
** 0004とか** 0005
の後に、次の//が続くのではなく、
改行を入れた上で、
続けたいのです。
どうすれば?

** 0004//
** 0005//
**
0006// - Function
** 0007// Compute
Frequency Characteristics from Wavewforms by Each Time-Frame
** 0009


引用解決済
トピックタグ
tenteku
 tenteku
(@tenteku)
ゲスト
結合: 15年前
投稿: 38
 

前者は一文字ずつ読み込んで改行を見つければいいのでは。

そんなやり方めんどくさい!嫌だ!!ってなら
後者の変換処理を含め環境を新しくしてboost::regexって手もあります。
VC6だとregexは使えなかったはず。
http://homepage3.nifty.com/kaku-chan/boost/regex/chapter_003.html
が参考になりますかね。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

基本はtentekuさんが書かれたとおりでしょう。

一番単純な実装は一文字ずつチェックすると言う事になります。
ただ、ここで言っている改行と言うのが文字コードで何に当たるのか
と言う部分をきちんと決めないといけないと思いますけれど。

Windowsで一般的な例からいくとCR+LFになるのでしょう。
CRとLFって何って言う場合は、そこから調べる必要が有りますけれど。
この辺はファイルを開く時のモードとか色々絡むので
一概にどうせよとは言えないのです。
つまりその辺の関数回りの使い方から勉強しないといけないよ
と言う話になります。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

VC++6.0の環境を使わないといけない理由がないのなら
新しい環境を使った方が良いような気もします。

VC++6.0のコンパイラはC++言語の規格に対する準拠率が低かったので
最近のC++言語の文法書ではできる事が出来なかったりします。
MFCを使う必要が無いのであれば、Express Editionと言う選択肢も
あるんですけどね。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

うーーん、
1. 必要な領域をnew等で確保する。
2. ファイルのバイト数をチェックする。(多い場合はエラー終了)
3. 一バイトづつ0x0d,0x0aをチェックして削除する。
4. 改行が必要なところに0x0d,0x0aを挿入する。
5. 処理の終わった配列をそのままファイルに書き込む
ですかね?
まー、一行づつ読み込む方法もありますね。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました