C ++ - 如何从包含必须忽略的行的文件中读取

时间:2014-03-29 16:57:15

标签: c++ properties streamreader ifstream

我已经在任何地方找到了这样的事情,信不信由你,大约3个月......

而且我也想到这可能是非常容易的......但经过多次试验,我没有成功。

有可能在其他地方找到这个,但我也不确定如何搜索它,这就是我在这里问的原因。

所以这就是我想做的事情: 我有这样的文件

[属性]

1 Din 17 M 10 D FFF

2 Dout 12 F 11 F FFF

[名称]

1 Din

2 Dout

文件在此处结束。

我想将整个文件读入变量,我已经这样做了,例如:

std::ifstream readP("properties.dat");    

unsigned short ID;
std::string Name;
unsigned short p2;
char p3;
unsigned short p4;
char gTemp;
std::string fProperty;

while(readP >> ID >> Name >> p2 >> p3 >> p4 >> gTemp >> fProperty);

现在我想阅读除[Property]和[Names]之外的所有内容,因为很明显文本中的这些字段,读者不会阅读,因为它们不是从while循环中读取的。

实现这一目标的好方法是什么?

3 个答案:

答案 0 :(得分:1)

你必须做一些更精细的解析。

所以,试试这个:

  • 阅读一行。
  • 决定如何处理它。
    • A)跳过。
    • B)解析变量。

答案 1 :(得分:0)

你不能忽视"线条,但你可以"跳过"它们。

我建议逐行顺序阅读std::getline,然后跳过不感兴趣的内容。

请注意,大多数文件系统(至少是Posix文件系统)中确实存在这些行。行通常由\n终止,但文件是一个字节序列。

答案 2 :(得分:0)

你应该逐行阅读,并确定你是否要处理这一行。

您可以检查第一个字符是否为[

http://www.cplusplus.com/reference/string/string/at/

if (str.at(0) != '[')
{
//Process this line by splitting the string with space ect
}