c语言 bin文件解析_如何在C ++中解析文件

c语言 bin文件解析

假设条件

我假设您知道或能够查找我在此处描述的功能,并对C ++编程有一定的了解。

费耶

尽管我将本文称为“如何使用C ++解析文件”,但实际上我们主要是对文件进行词法化,即将流分解为其组成部分,而忽略流包含的语法。 解析实际上包括语法以使其有意义。

认为词汇化是一堆单词中的阅读,而解析则是一句话中的阅读。 每个单词都具有某种含义,但是如果没有句子的上下文,就意味着没有任何非常有用的含义。

我没有使用“如何在C ++中进行词法分析”这一标题,因为你们中的大多数人可能都不知道这意味着什么。 如果您这样做,那么我深表歉意。

介绍

嗨,上次我向大家展示了如何使用C解析文件。在本文中,我现在将介绍如何使用C ++解析文件。

对于那些尚未阅读该文章的人,请在

流和文件 ,因为C ++和C ++相同。但是,使用C ++流时,分别使用cin,cout和cerr而不是stdin,stdout和stderr。 缓冲和双缓冲

双缓冲意味着在处理/显示之前从一个缓冲区转储到另一个缓冲区。 在C ++中,所有流库都被缓冲。

解析文件

使用描述的缓冲技术可以非常简单地完成文件的解析。

没有双缓冲的解析

在没有双重缓冲的情况下解析文件并非总是可能的。 唯一的方法是只读取和存储数字。

例如,这是一个示例文件:


1, 2, 3, 4, 5
6, 7, 8, 9, 10 
要在没有双重缓冲的情况下读入,可以循环以下操作:

// CODE FRAGMENT 1
int itemsParsed = 0;
int items[5];
for (itemsParsed = 0; itemsParsed < 5 && cin.good(); ++itemsParsed) {
     
  cin >> items[itemsParsed];
  if (itemsParsed != 4 && cin.peek() == ’,’) {
     
    cin.ignore(1);  // clear out comma
  }
}
if (!cin.good()) {
     
  --itemsParsed;
  // check what flag was set and act appropriately
  //...
  if (!cin.eof()) {
     
    cin.clear(); // Clear the error flag (unless it is eof)
  }
} 
请注意,每个数字后的输入流中都必须包含逗号。 逗号后可以有0个或多个空格。 空格可以是常规空格,制表符,垂直制表符(很少使用),回车符或换行符。

代码片段1a有点简单,因为它使用C ++异常处理将正常的代码流与例外的代码流分开。


// CODE FRAGMENT 1A
int itemsParsed = 0;
int items[5];
cin.exceptions(~ios::goodbit);  // turn on exceptions
try {
     
  for (itemsParsed =
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值