我有一个这种类型的文件:
key1#value1#value2##
key2#value3#value4#value5##
key3#value6##
etc.
我需要读取每一行,并分别键和值。我尝试了不同的方法(istringstream & iterator
- 但我不知道如何明确定义#作为分隔符),双getline
,我读了boost
个库但是我不确定我能编译它。
我认为另一种方法是将每一行分成一个向量。第一个元素将始终是键,向量的大小将决定每行的值。
分割每条线的最佳方法是什么?
答案 0 :(得分:6)
分割每条线的最佳方法是什么?
我只需要调用while(std::getline(stream, line)
来读取每一行,然后对于每个读取行,我会将其放入istringstream(iss
),并反复调用while(std::getline(iss, value, '#'))
(使用{{ 1}}是您的初始流,stream
和line
是字符串)。内循环中读取的第一个值将是键;其余的,将是价值观。
一些代码:
value
答案 1 :(得分:0)
您可以将每一行作为字符串。之后使用此信息Split a string in C++?它非常有用