如何在 c++ 中使用 ',' 作为 getline 分隔符
How to use ',' as getline delimiter in c++
这是我的代码。当我使用"\t"作为分隔符时,数据集由 \t 分隔,它可以工作,但是当我使用","与由","分隔的数据集一起使用时,它不起作用。
void TApp::LoadTree(char * fileName){
ifstream in(fileName);
char starID[200];
double dRa,dDec,dU,dG,dR,dI,dZ;
long w = 0;
TStar * star;
if (SlimTree!=NULL){
if (in.is_open()){
cout << "nLoading objects ";
while(in.getline(starID, 200, ',')){
in >> dRa;
in >> dDec;
in >> dU;
in >> dG;
in >> dR;
in >> dI;
in >> dZ;
in.ignore();
star = new TStar(starID, dRa, dDec, dU, dG, dR, dI, dZ);
SlimTree->Add(star);
delete star;
w++;
if (w % 10 == 0){
cout << '.';
}//end if*/
}//end while
我尝试读取的数据文件如下所示:
1237645876878180399,15.2062613727499,-1.02188584631684,-9999
,-9999,-9999,-9999
我的猜测是你有一个逗号分隔的值(即 CSV(文件,其中逗号分隔所有字段。
然后,您的代码将不起作用,因为输入运算符>>
对空格以外的任何其他分隔符一无所知。
它使用制表符(或其他空格(作为分隔符,因为>>
运算符会跳过前导空格,并在空格处停止读取。
我通常建议您找到一个库来帮助您读取和解析它们,因为CSV文件看似简单,但实际上可能包含许多特殊和极端情况,这使得阅读它们变得不平凡。
如果您仍然想尝试自己解析它们,那么我真的建议您首先阅读整行并尝试分别解析每一行。然后,您必须记住读取每个字段之间的分隔符。
相关文章:
- 如何在 c++ 中使用 ',' 作为 getline 分隔符
- 逗号作为分隔符和运算符
- 在 std::getline() 上使用任何字符作为分隔符
- Flex Lexer 模式匹配句子分隔符/标点符号作为 URL 路径部分
- 在 std::string 中使用非法的 UTF-8 八位字节作为分隔符
- 如何在C 中使用字符串作为getline()函数中的分隔符
- 将 OpenCV MAT 保存到 TXT 文件作为不带分隔符的十六进制值
- 逗号作为变量初始化中的分隔符(而不是运算符)
- 如何在 getline() 中不使用 作为分隔符
- POCO - 属性文件配置保存方法始终使用 ":" 作为分隔符进行写入
- Qt-拆分一个QString,使用几种类型的空白作为分隔符
- C++使用逗号作为分隔符的获取线多个变量类型
- 使用 boost::spirit 将元素解析为矢量,使用分号或换行符作为分隔符
- 在使用boost拆分方法时,我可以使用字符串作为分隔符吗
- c++使用单词列表作为分隔符拆分字符串
- 使用getline分隔输入,使用逗号作为分隔符
- 分割使用整个字符串作为分隔符
- 如何使用空白作为分隔符对字符串进行标记并将标记输入到列表中
- 移动字符串中的单词,单词之间使用空格作为分隔符
- 使用多个空格 (>1) 作为分隔符,使用 C++ 或 linux 将一行分隔为列