Windows XP
VC++ 6.0(古いですが・・・)
で開発を行なっています。
レベル0.2くらいの初心者ですがよろしくお願いします。
以下のコードでtxtファイルを読み込んでいるのですが、
それをcsvファイルを読み込めるようにしたいのです。
***********************************
{
Cstring ss;
UpdateData(TRUE);
CString fin(data.txt,CFile::modeRead);
m_text=";
while(fin.readString(ss)!=NULL){
m_text=m_text + ss;
}
UpdateData(FALSE);
}
***********************************
しかし、どのように書き換えれば良いのかがいまいち分かりません。
txtをcsvに書き換えただけでは当然のように文字化けしてしまいました(涙)
他のスレッドのCSV欄にも調べたのですが、適切な記述方法がどうしても理解できません
でした。
要するになにがしたい?
# ',' を区切りに文字列を切り分けたいってこと?
επιστημηさん、ご返答ありがとうございます。
>要するになにがしたい?
> ',' を区切りに文字列を切り分けたいってこと?
上記のプログラムをCSVのファイルが読み込めるプログラムに書き換えたいのです。
更に、そうするにはどこをどのように書き換えればよいのかが分からないのが現状です。
確かにカンマで文字列を区切りたいです。
> txtをcsvに書き換えただけでは当然のように文字化けしてしまいました
ココがわからん。ファイルの拡張子を変更しただけで文字化けするワケがない。
最初っからバケてたんじゃないのか?
> CString fin(data.txt,CFile::modeRead);
いずれにせよ、こんなコードが(csvじゃなくたって)まともに動くワケねぇ。
つか、コンパイルできないはず。
文字化けは片方だけUnicodeだったとか。
読み込むだけならtxtと全く同じですむはず。
','で分割するのはまた別の話。
>他のスレッドのCSV欄にも調べたのですが
この文章がイマイチよく分かりませんが、他で資料を読んだものの分からなかっ
た、という事でしょうか。
とりあえず、どのような形で読み込みたいのかがはっきりしないと具体例を示すの
は難しいと思います。
3次元配列[行][列][文字列]等とするのか、
2次元配列[列][文字列]として1行ずつ読み込んで処理するのか、
1次元配列[文字列]として1セルずつ読み込んで処理するのか、
クラス化してクラス越しに処理するのか
等です。
>ココがわからん。ファイルの拡張子を変更しただけで文字化けするワケがない。
>最初っからバケてたんじゃないのか?
txtとcsvのファイルを2つ用意しておいて、csvの方を選んだら文字化けしてしまい
ました。
txtファイルのほうは問題なく読めていました。
>> CString fin(data.txt,CFile::modeRead);
>いずれにせよ、こんなコードが(csvじゃなくたって)まともに動くワケねぇ。
>つか、コンパイルできないはず。
すみません!記入ミスです!
CStdioFile fin(data.txt,CFile::modeRead);
の間違いでした。
> txtとcsvのファイルを2つ用意しておいて、csvの方を選んだら文字化けしてしま
いました。
> txtファイルのほうは問題なく読めていました。
もともとファイルのエンコードが異なるんじゃかしら? 確認しました?
エンコードが必要なファイルをそのまま読んでもバケて当然。
csvファイルって、結局はテキストファイルの一形態でしかないので、別々の
ファイルで試すのではなく、まずはテキストファイルの拡張子を単にcsvに
変えただけのファイルで試してみましょう。
それが実際にコンマ区切りかどうかはとりあえず脇に置いといて。
他の方も指摘されている通り、それだけでバケることはないはずです。