【发布时间】:2015-07-22 04:19:27
【问题描述】:
对不起,如果这只是纯粹的愚蠢,但我遇到了通过 C++ 读取文件的问题。 这是我要读取的 CSV 数据:
5;1;0;3;3;5;5;3;3;3;3;2;3;3;0
5;1;0;3;3;5;0;3;3;3;3;2;0;0;3
5;1;1;3;3;0;0;0;0;3;5;2;3;3;3
0;3;5;5;0;2;0;3;3;0;5;1;1;0;0
0;0;3;5;5;2;0;0;0;0;5;5;1;1;0
0;0;0;0;5;2;0;0;0;0;0;5;5;1;0
;;;;;;;;;;;;;;
Code;Bezeichnung;Kosten;;;;;;;;;;;;
0;Ebene;6;;;;;;;;;;;;
1;Fluss;10; (begrenzt nutzbar);;;;;;;;;;;
2;Weg;2;;;;;;;;;;;;
3;Wald;8;;;;;;;;;;;;
4;Brücke;5;;;;;;;;;;;;
5;Felswand;12;;;;;;;;;;;;
在这里,我想读取第一个值(由 ;;;; 分隔)并将其存储在二维数组中。如果它完全由';'分隔,那将不是问题。但是如果使用
while (getline(csvread, s, ';'))
{
[...]
}
我得到这样的信息:{5}{1}{0}{3}{3}{5}{5}{3}{3}{3}{3}{2}{3}{3}{0\n5}{1}
所以它基本上保存了换行符并且不认为它是分隔符。
那么即使您有两个分隔符,是否也可以选择使用 getline ?还是我完全关闭了? 我还考虑将它逐行读取到一个字符串中,添加一个 ;到字符串并将其重写到文件中,以便使用 ; 重用 getline。但这并不是最好的选择,对吧?
【问题讨论】:
-
你能不能
sed去掉其中一个分隔符,然后将结果通过管道传输到你的程序中?