Visual C++を使い始めたばかりの初心者です。
恐縮ながら、Visual C++でのcsvファイルの処理方法についておたずねさせていただければと存じます。
通常のスクリプト言語では、1行読んできて、"," で split をしてやることで、csvファイルを処理できるのですが、Visual C++ではどのようにするのが効率がいいのでしょうか?
csvファイルを簡単に取り扱うことができるようなクラスライブラリが提供されているものなのでしょうか?それとも、1文字1文字、コンマを判定していくのが普通なのでしょうか?
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
1文字1文字、コンマを判定していくしかないと思います。
下記のプログラムは表面的には一文字ずつ判定していないように見えますがfind()の内部でやっているので同じことです。見えるところで一文字ずつ処理するほうが、きめ細かな処理ができるのでベストではないかと思います。
ライブラリを使うほうが見栄えはいいですが。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
string col[300][10],row;
int c,r,p;
ifstream f("9437.csv");
if(f.bad()) {
cout << "file not found";
exit(EXIT_FAILURE);
}
r= c = 0;
while(!f.eof() && getline(f,row)) {
for(;(p = row.find(",")) != row.npos;row = row.substr(p + 1)) {
col[r][c] = row.substr(0,p);
cout << col[r][c] << ' ';
c++;
}
col[r][c] = row.substr(0,p);
cout << col[r][c] << endl;
r++;
}
f.close();
}
9437.csv
日付,始値,高値,安値,終値,出来高,逆日歩,貸株残高,融資残高
2009/03/09,141300,142000,137600,138000,104014,-,11754,17458
2009/03/06,146100,146500,141000,141900,121471,-,11843,17170
2009/03/05,150600,150600,147500,147500,117183,-,10530,16623
2009/03/04,149800,150400,148300,149900,75954,-,8452,11718
2009/03/03,149900,151100,149900,150400,66715,-,7694,10549
2009/03/02,151200,152300,150400,152200,53345,-,8589,8984
2009/02/27,152000,153900,150900,153900,86239,-,6503,7793
2009/02/26,150200,151400,150200,151100,69577,-,7676,8884
2009/02/25,152600,153000,149800,150700,90103,-,4440,11015
2009/02/24,150600,151700,150400,151300,60421,-,5055,8724
2009/02/23,153100,154600,151100,151400,98148,-,4745,8072
2009/02/20,154200,156400,153500,153700,60461,-,4225,7061
2009/02/19,152400,156000,152400,154200,70499,-,6211,7119
2009/02/18,151700,153100,150800,152100,49194,-,6310,8019
2009/02/17,154800,155300,151900,153500,50206,-,5369,7714
2009/02/16,150300,155300,150100,155100,79064,-,5131,7281
No.5
- 回答日時:
VisualC++2008で、MFCクラスライブラリをお使いなら
CStringT::Tokenizeが利用できると思います。
あるいは、AfxExtractSubStringも使えますね。
ただ、ここで言うCSVファイルが、
例えば、ExcelでCSVとして保存したファイルを指しているなら、
ちょっと厄介です。
(','入りやスペース入りをCSVで保存してみてください)
もしそうなら、下記の本の第四章をご参照ください。
Brian W.Kernighanがあなたの問いに答えてくれますよ。
http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82 …
参考URL:http://msdn.microsoft.com/ja-jp/library/k4ftfkd2 …
No.3
- 回答日時:
>Visual C++を使い始めたばかりの初心者です。
う~ん、Borland C++ Builderだと
・読み込み用のTStringListを作る
・分解用のTStringListを別に作る
・作った読み込み用TStringListのLoadFromFile()メソッドでCSVファイルを読み込む
・TStringListのStrings[]プロパティで1行を取り出す
・分解用のTStringListのCommaTextプロパティに、取り出した1行を放り込む
・分解用のTStringListのStrings[]プロパティで、カンマで区切られ済みの項目を取り出す
という6ステップ書くだけで可能なんだけど。
ハンパに覚えてしまう前にVisual C++みたいな腐ったコンパイラは捨てて、Borland C++ Builderに乗り換えてみては?
No.1
- 回答日時:
ん~ お使いになっている VCのバージョンは何でしょう
またプログラミングスタイルはどのようなものなのでしょうか
VC++6.0 Professional
Win32API + Cランタイム
とか
VC2005 Express Edition
WindowsForm(C++/CLI)
Cランタイムでしたら 1行読み込みにはfgetsなどを使います
『,』による分離には strtokや strchrなどで探してstrcpyで別バッファにコピーとか
C++/CLIでしたら
1行読み込みは ReadLine
項目の分割には String.Split
といった具合です
VC2005以降であれば Microsoft.VisualBasic.FileIO.TextFieldParserを使うといった手法もありかと ・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- XML PHP.laravelについて 1 2023/07/06 15:26
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- その他(プログラミング・Web制作) Sikulix2.0.5(Jython2.7.3)でcsvを読込WEB検索条件にpasteで文字化け 1 2023/03/31 11:02
- Windows 10 アプリ内のMicrosoft・・・ 4 2022/10/10 16:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
複数のcsvファイルをExcelに一...
-
バッチでCSVを処理する時、空の...
-
csvファイル 項目数取得
-
【エクセル マクロ】読み込ん...
-
マクロから出力されるcsvのダブ...
-
vb2010でCSVファイルを並び替え...
-
COBOL85でのCSVファ...
-
データ解析ソフトRでのファイル...
-
CSV形式での保存時に”文字列...
-
【C#】パス名で無効な文字
-
Excelでcsvのフィールドが減る
-
Rについての質問です。 Abc.csv...
-
CSVファイル作成
-
VBSでソート&ファイル分割
-
複数のCSVファイルのAccessテー...
-
csvファイルのデータの間引きを...
-
csvファイルでの日付設定「yyyy...
-
特定ファイルの一括削除
-
エクセルVBA 大容量CSVファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
csvファイル 項目数取得
-
バッチでCSVを処理する時、空の...
-
csvファイルでの日付設定「yyyy...
-
マクロから出力されるcsvのダブ...
-
CSV形式での保存時に”文字列...
-
データ解析ソフトRでのファイル...
-
VBAでcsvファイルを読み込んで...
-
複数のcsvファイルをExcelに一...
-
COBOLでCSVをインプットにして...
-
エクセルVBA 大容量CSVファイル...
-
【C#】パス名で無効な文字
-
CSVファイル作成
-
csvファイルのデータの一部を取...
-
CSVファイルの項目行を削除...
-
EXCEL|csvで保存→開くcsvを閉じる
-
複数のCSVファイルのAccessテー...
-
巨大なCSVの加工(指定列のみの...
-
COBOL85でのCSVファ...
-
csvファイルのデータの間引きを...
おすすめ情報