我可以在 C 函数 getline 中使用 2 个或更多分隔符吗?

新手上路,请多包涵

我想知道如何在 getline 函数中使用 2 个或更多分隔符,这是我的问题:

该程序读取一个文本文件……每一行都会像:

    New Your, Paris, 100
   CityA, CityB, 200

我正在使用getline(file,line),但是当我想获取CityA,然后是CityB,然后是数字时,我得到了整条线;如果我使用’,’分隔符,我不知道下一行是什么时候,所以我试图找出一些解决方案..

不过,我怎么能使用逗号和 \n 作为分隔符?顺便说一句,我正在操作字符串类型,而不是字符,所以 strtok 是不可能的:/

一些划痕:

 string line;
ifstream file("text.txt");
if(file.is_open())
   while(!file.eof()){
     getline(file, line);
        // here I need to get each string before comma and \n
   }

原文由 user6185425 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

您可以使用 std::getline 读取一行,然后将该行传递给 std::stringstream 并从中读取逗号分隔值

string line;
ifstream file("text.txt");
if(file.is_open()){
   while(getline(file, line)){   // get a whole line
       std::stringstream ss(line);
        while(getline(ss, line, ',')){
             // You now have separate entites here
        }
   }

原文由 WhiZTiM 发布,翻译遵循 CC BY-SA 3.0 许可协议

我不认为这就是你应该解决问题的方式(即使你能做到);反而:

  1. 在每一行中使用你必须阅读的内容
  2. 然后用逗号分隔该行以获得您想要的部分。

如果 strtok 将完成 #2 的工作,您始终可以将字符串转换为 char 数组。

原文由 Scott Hunter 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题