我正在阅读不同来源的不同.csv文件。我不是在创建这些文件。
在阅读这些文件的某些时候,我需要跳过几行并使用它:
void skipLines(unsigned int nLines, std::ifstream& file){
char l[1024];
for (unsigned int i = 0; i < nLines; i++)
file.getline(l, 1024);
}
对于某个文件,这一直有效。
文件正确打开,然后我想跳过前5行并运行skipLines(5, file)
。
通过调试,我可以看到l
正确获取前4行的数据。当到达下一行(应该有文本)时,它只在调试器中显示为""
。
如果我检查在该行中找到的字符,我看到第一个字符是'\0'
(字符串的结尾?),以下字符是“应该”来自上一行的字符。 / p>
如果继续在更多行上运行skipLines()
,它会继续循环使用相同的数据。始终l
使用以'\0'
开头的相同字符集。
这会导致什么?在解析文本文件时,我应该如何正确地“跳过”?
编辑:如果将文件内容复制并粘贴到新文件并保存。问题消失了。但这不是我可以在这种情况下使用的工作。
我不想分享文件的确切内容,但它基本上是这样的:
Transfers
User,****,*****
Timestamp,Type,***,Subtotal,Fees,Total,Currency,Price,Payment Method,ID,Share
2017-06-01 10:54:42 -0700,***,0.25638772,50.0,2.00,52.0,***,195.02,***************,***54e27dd1741d3810a8e0,0
以Timestamp开头的行是它循环的地方。