检测 CSV 文件中的记录/行分隔符

rio*_*ter 0 c++ csv delphi

如何以编程方式检测 CSV 文件中使用的记录/行分隔符。在 90% 的情况下它是 CR/LF 对,但有时它是 CR 或 LF。

还应考虑到引用数据字段中的换行符可能与行/记录分隔符不同。

我怎样才能做到这一点?

更新:我只对什么是行/记录分隔符感兴趣:CR/LF、CR 或 LF。

Ola*_*che 5

当您在文本模式下使用 iostreams 打开文件时,该库将处理 Linux、Windows 或 MacOS 上的不同行尾。

可以通过计算未转义的引号来检测引用数据字段中的换行符。如果数字是奇数,则您可能有一个未终止的数据字段,因此嵌入了换行符。

当您想知道使用哪个行分隔符时,只需阅读字符,直到获得 CR 或 LF。如果是LF,你就完成了;如果是 CR 读取下一个字符。如果下一个字符是 LF,则您的行尾是 CR LF,否则就是 CR。