C++でCSV形式のファイルを読み込んで内部情報として保持することがあったんだけど…あかんね。しばらくPGしてないと忘れちゃうんだもの…。
ちょっと困ったので、メモっとくことに。
まず、ソースはこんな感じ。
とりあえず、区切り文字がカンマ”,”となってるCSVに見立てた文字列をchar型の配列に格納してみる。
#include <iostream>
#include <string>
using namespace std;
// 文字数を決めとく
#define MAX_SIZE 1024
int main (int argc, const char * argv[])
{
// 変数を定義する
string buffer = "aaa,bbb";
char key[MAX_SIZE];
char value[MAX_SIZE];
// CSVをカンマ区切りで読み込む
sscanf( buffer.c_str(), "%[^,],%[^,]", key, value);
// コンソールへ出力する
printf("%s,%s", key, value);
return 0;
}
実行するとこんな感じ。
[Switching to process 10054 thread 0x0] aaa,bbb
ちなみに、今回はXCodeで試したんだけど、Visual Studio C++だと、sscanf_sを使えってコンパイルするときに警告メッセージが出力されるそうな。
sscanf_sは文字列のサイズ(バイト数)を指定しないと実行のときに例外が発生しちゃう(落ちる)ので注意が必要。
んまま、メモってことで。