C++ 如何使用'';作为c++;

C++ 如何使用'';作为c++;,c++,fstream,ifstream,getline,C++,Fstream,Ifstream,Getline,这是我的密码。当我使用“\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

这是我的密码。当我使用“\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
void TApp::LoadTree(char*fileName){
ifstream-in(文件名);
char-starID[200];
双dRa、dDec、dU、dG、dR、dI、dZ;
长w=0;
TStar*星;
if(SlimTree!=NULL){
if(in.is_open()){
cout>dRa;
在>>dDec中;
在>>dU;
在>>dG中;
在>>博士;
在>>dI;
在>>dZ;
in.ignore();
star=新TStar(starID、dRa、dDec、dU、dG、dR、dI、dZ);
SlimTree->Add(星形);
删除星号;
w++;
如果(w%10==0){
cout我猜您有一个文件,其中逗号分隔所有字段

那么,您的代码将无法工作,因为输入运算符
>
除了空格之外,对任何其他分隔符都一无所知

它使用制表符(或其他空格)作为分隔符,因为
>
操作符跳过前导空格,并在空格处停止读取


对于CSV文件,我通常建议您找到一个库来帮助您读取和解析它们,因为CSV文件看似简单,但实际上可能包含许多特殊情况,使读取它们变得不那么简单


如果您仍然想自己尝试解析它们,那么我真的建议您首先阅读完整的行,并尝试分别解析每一行。然后您必须记住读取每个字段之间的分隔符。

与您的问题无关,但我建议您停止使用stream
getline
成员函数,并安装ad与一起使用。阅读后检查流状态以确保您正在阅读。1237645876878180399,15.2062613727499,-1.02188584631684,-9999,-9999,-9999,-9999,-9999与您的阅读方式不符。阅读csv文件时有许多重复项。无关:
star=new TStar(…);SlimTree->Add(star);delete star;
异常。如果
Add(star)
存储指针,
delete star;
将使存储的指针无效。如果
Add(star)
存储指向的数据的副本,则可以
TStar star(…);SlimTree->Add(&star);
并避免动态分配。此外,编译器可能会找到一些额外的优化空间,特别是当您更改
Add
以接受引用而不是指针时。如果您真的非常想更改分隔符(参见示例)但是我支持你的建议。数据集是一个.txt文件,不管扩展名是什么。它仍然是一个CSV文件。