用C++解析文件

14 c++ string parsing

我有以下格式的字符串数据:"Ronit","abc""defgh","abcdef","fdfd",

当逗号不在字符串中时,有人可以在C++中建议一些好的代码来返回以逗号分隔的标记吗?

即它应该返回

  1. "Ronit"
  2. "ABC" "defgh"
  3. "ABCDEF",FDFD"

更清楚

谢谢大家的帮助.

下面是我的示例文件,作为输入,

第一行会告诉我我有多少列#

1,名称,NAME3,NAME4

"user1","user,user2","user3","userrr

rrr4"

"用户1","用户2","用户3","我们

ER4"

"用户1", "用户2", "用户3", "USER4"

"","user2",","",#

下面是csv文件的输出,请给我编译代码,以便我可以测试,再次感谢您的帮助.

第1行,1)user1,2)user,user2 3)user3 4)userrrr4

注意rr4在下一行.

第2行,1)user1 2)user2 3)user3 4)us er4

注意er4在下一行.

第3行,1)user1 2)用户,2 3)user3 4)user4

第4行1)2)user2 3)4)

小智 17

C++字符串工具箱库(StrTk)具有以下问题的解决方案:

#include <iostream>
#include <string>
#include <deque>
#include "strtk.hpp"

int main()
{
   std::deque<std::string> word_list;
   strtk::for_each_line("data.txt",
                        [&word_list](const std::string& line)
                        {
                           const std::string delimiters = "\t\r\n ,,.;:'\""
                                                          "!@#$%^&*_-=+`~/\\"
                                                          "()[]{}<>";
                           strtk::parse(line,delimiters,word_list);
                        });

   std::cout << strtk::join(" ",word_list) << std::endl;

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

更多例子可以在这里找到


Nic*_*kis -1

这不是最好的方法,但您可以使用strtok函数。

  • strtok() 不是一个好主意。它在解析输入字符串时修改它。还有比这更干净的方法。 (2认同)