CStringArrayの一行目を削除 – プログラミング – Home

CStringArrayの一行目を削除
 
通知
すべてクリア

[解決済] CStringArrayの一行目を削除


ponta
 ponta
(@ponta)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

ーー
WinXP
VC6.0
MFCの環境です。
ーー

ファイル操作で、質問があります。

ファイルオープンし、そのファイルをReadStringで一行づつ読み込んだ後、
CStringArray配列に保持しています。
その配列の中の、一行目の削除について質問があります。
ご教授のほどよろしくお願いします。

読み込むファイルは、csvファイルで

(例)
食べ物,乗り物,数\r
りんご,自動車,10
バナナ,船,5

といった内容になります。
今回、削除したい行は、常に1行目の「食べ物,乗り物,数\r」と決まっています。

コード上では、
while(stdFile.ReadString(csStr)) //一行読む
{
  m_Array.Add(csStr);//Add

とやっていて、読み込んだファイルをm_Arrayという
CStringArray配列で保持しています。

このwhile文の中で、一行目だけを削除して
CStringArray配列に改めて保持したいと思っていますが、
その一行目だと見極めることができません。
どうしたらよいでしょうか?

削除は、RemoveAtを使おうと考えていますが・・・。

よろしくお願いします。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

ループ前に読み捨てる記述を入れればよいのでは?

// 読み捨て用
strFile.ReadString(csStr);

// 2行目から読み込むことになる
while(stdFile.ReadString(csStr)) //一行読む
{
  m_Array.Add(csStr);//Add


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

if文を入れたほうがよかったかも。

// 読み捨て用
if (strFile.ReadString(csStr))
{
// 2行目から読み込むことになる
while(stdFile.ReadString(csStr)) //一行読む
{
   m_Array.Add(csStr);//Add

}

RemoveAtを使うのであれば、インデックス0番目が先頭行なので簡単に出来るのでは?

if (m_Array.GetSize() > 0)
m_Array.RemoveAt(0);

まぁ、CArray系のクラスは要素数が多いときの削除処理や挿入処理に向かないので前者
を使うべきですけど。


返信引用
ponta
 ponta
(@ponta)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

解決しました!
Blueさん、ありがとうございましたm(__)m


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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