Excelの表をcsv形式にして
getlineで取り込んだものを「,」で区切って配列で使いたいのですが
以下のようにすると出力的にはカンマで区切れるのように見えるのですが
実際使おうとすると改行の部分で区切れていない状態(ee\nffと言う状態)
になってしまい使えないのですがどうすればいいでしょうか?
わかりにくい説明だとは思いますが宜しくお願いいたします。
----------------------------------
ifstream fin("a.csv");
string str;
while(getline(fin,str,','))
{
cout << str << '\n';
}
----------------------------------
a.csvの中身は以下のような感じです。
aa,bb,cc,dd,ee
ff,gg,hh,ii,jj
こんなんでいいのかな?
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
int main() {
std::ifstream fin("a.csv");
std::string line;
while ( std::getline(fin,line) ) {
std::string token;
std::istringstream stream(line);
while ( std::getline(stream,token,',') ) {
std::cout << '[' << token << ']' << std::endl;
}
}
}
早速回答していただいてありがとうございます。
おかげ様でほぼ解決できたのですが、
a.csvの中身が以下のようになっている時、
---------------
aa,bb,cc,dd,
ff,gg,hh,ii,jj
---------------
後で配列を使って列単位でソートなどをしたいので
本来は「ee」が入っている所に文字が入っていない場合にも
そこのスペースを確保しておきたいとおもってます。
他の部分が抜けてる場合は確保できるので問題がないのですが
このような場合はどうしたらいいと思いますか?
図々しくてすいません。
書き込んだところで思いつき、
最初にgetlineで取り込んだものに
str += ',';
を入れカンマを終わりに付ける事で自己解決いたしました。
ありがとうございました!!!
ツイート | ![]() |