读书人

C++基础解析七

发布时间: 2008-11-17 11:08:51 作者: liuhuituzi

一、fseek()函数

fseek

  语法: #include

  int fseek( FILE *stream, long offset, int origin );

  函数fseek()为给出的流设置位置数据. origin的值应该是下列值其中之一(在stdio.h中定义):

  名称 说明

  SEEK_SET 从文件的开始处开始搜索

  SEEK_CUR 从当前位置开始搜索

  SEEK_END 从文件的结束处开始搜索

  fseek()成功时返回0,失败时返回非零. 你可以使用fseek()移动超过一个文件,但是不能在开始处之前. 使用fseek()清除关联到流的EOF标记.

二、fscanf()函数

fscanf

  语法: #include

  int fscanf( FILE *stream, const char *format, ... );

  函数fscanf()以scanf()的执行方式从给出的文件流中读取数据. fscanf()的返回值是事实上已赋值的变量的数,如果未进行任何分配时返回EOF.

三、C++boost之conversion/lexical_cast

动 机
  有时候,我们必须把一个值转换成字面上一样的其它形式,比说把int型的数值转换成string型字符串,相反把string字符串转成int型数值也一样。当程序内部数据类型相互转换或者程序内部数据类型转换成非程序内部类型(比如windows和配置文件),想上述的类型转换操作是最常见,也是最常用的。
  在标准C/C++库中,提供和很多关于类型转换的工具或功能函数。但是,它们缺乏易用性,可扩展性,和安全性。
  举一个例子,在标准C家族中有一个atoi的函数,在使用过程中它就有许多限制:
  单边转换:仅从文本类型转换为内部数值类型。使用C库当中的函数进行类型转换,要么不方便、要么没有像sprintf那样安全、要么没有像其他非标准库那样简单。
  范围小:其转换的范围仅仅是内建数字类型的一个子集(int,long和double类型)。
  拓展性差:它不能扩展成一种特定类型,比如说把一个字符串转换成复数或有理数。
  C标准库中还有一个典型的strtol函数,它也有上述限制,不过在转换过程中提供了更好的控制。但是在一般情况下,
  这样的控制是不必要的或者很少用到的。scanf家族的功能函数提供的控制甚多,但也缺少安全性和易用性。
  现在我们来讨论,C++标准库中提供的一种核心类型格式化的函数stringstream。在类型格式化和在任意类型之间的I/O
  转换上,它提供了更好 的控制。然而,这么简单的转换就用stringstream显得太笨重和费解。

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.net/exam/

读书人网 >复习指导

热点推荐