【问题标题】:getline ignores '\n' - getline with two delimiters [closed]getline 忽略 '\n' - 带有两个分隔符的 getline [关闭]
【发布时间】:2016-10-27 23:37:06
【问题描述】:

在 c++ 中,我得到了一个矩阵的 csv 文件,格式为 float,float,float,\nfloat float float \n 的每一行。

如果我使用getline 明智地读取文件行,则始终会读取结束行分隔符\n,即getline(csv_file, csv_line, '\n')getline(csv_file, csv_line) 作为输出提供1,2,3,\n 而不是1,2,3,,正如我所期望的那样到。我怎样才能专门丢弃这个\n

此外,我如何区分这两个输入版本并存储特定的分隔符 ' '','

【问题讨论】:

  • 行尾标记是否可能实际上是\r\n 而不仅仅是\n,所以\r 不会被丢弃,但您的平台仍将其视为换行?
  • 不,它只是每行末尾的'\n'
  • 你如何区分逗号和空格分隔符?事先不知道分隔符是什么。

标签: c++ csv getline


【解决方案1】:

首先,让数据以每行不同的格式呈现通常不是一个好主意。

但如果是,您可以使用不带分隔符的this getline 将所有行读取为字符串,然后使用正则表达式或简单的字符串函数解析字符串。您可以通过尝试在字符串中查找, 符号来定义它的格式。如果你find它,那么你需要用逗号分隔,否则用空格分隔。

还可以查看 stringstream 类 (link)。仅适用于需要从已读取的字符串中分割一些值(而不仅仅是一种类型)的情况。

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 2019-03-13
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2018-09-18
    • 2013-02-10
    • 1970-01-01
    • 2012-10-05
    相关资源
    最近更新 更多