抱歉,如果这只是纯粹的愚蠢,但我陷入了通过 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。但这并不是最好的选择,对吧?
你应该做'\n'
and ';'
分别分割:
// here split into lines by '\n'
while (getline(csvread, line, '\n'))
{
// in here, split line by ;
std::vector<std::string> elems;
boost::split(elems, line, boost::is_any_of(";"));
// do something with elems
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)