std :: getline用于逗号分隔的表文件,其中包含某些字段的引号

Cyp*_*106 5 c++ c++builder

我基本上运行以下代码.此代码逐行执行并获取通用逗号分隔表文件的不同字段.我的问题是,有时"标题"字段可以包含逗号.当它这样时,它被引号括起来:"这,这是我的头衔".但是当我的代码看到逗号时,它只会将其后的所有内容视为下一个字段.并非所有标题都有引号,只有引号括起来.我的问题是,我不知道如何使代码检查这....我怎样才能让我的代码检查这个问题?

非常感谢,你好.这对我的有酬工作意义重大!

while (getline(BookLine, ImpLine, '\n'))  // Get each line
{
   // create a string stream from the standard string
   std::istringstream StrLine(ImpLine);

   std::string
   bookNumber,
   chk,
   author,
   title,
   edition;

   // Parse lines
   std::getline(StrLine,bookNumber,',');
   std::getline(StrLine,chk,',');
   std::getline(StrLine,author,',');
   std::getline(StrLine,title,',');            
   std::getline(StrLine,edition,',');
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*fin 6

做得好很复杂.基本上,你读第一个字符.如果它不是引用,那么你读到下一个逗号.如果是报价,请阅读下一个报价.然后你偷看下一个角色,看看它是否是另一个引用.如果是,则再次读取下一个引号,并将您读到的内容添加到第一次读取的内容的末尾,但没有引号(即引号字符串中的引号由两个连续引号表示).当你得到一个引号后跟一个引号以外的东西(通常应该是一个逗号)时,你就到达了该字段的末尾.