当前位置:编程学习 > C/C++ >>

C++笔记(1)

1.设计自己的头文件。
头文件为相关声明提供了一个集中存放的地方。编译头文件需要一定的时间,如果头文件太大的话,程序员可能不愿承受其所带来的编译代价。头文件用于声明而不是用于定义,定义的内容不应该放在头文件里。当我们在头文件中定义了const变量后,每个包含该头文件的源文件中都拥有了此个const变量。
#include设施是C++的预处理器,他处理程序的源代码,在编译器之前运行。只接受一个参数:头文件名。
避免多重包含:为了避免名字冲突,预处理器变量经常用大写字母表示。#define指示接受一个名字并定义该名字为预处理器变量;#ifndef指示检测指定的预处理器变量是否定义,若未定义,则其后的所有指示都将被处理,直到出现#endif;
可以使用这些措施来预防多次包含同一头文件:
[cpp]  
<span style="font-family:Microsoft YaHei; font-size:14px">#ifndef xxx_H  
#define xxx_H  
    xxxx  
#endif</span>  
2.c_str()、data()、copy(p,n)
标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n);
 
c_str():
 
生成一个const char*指针,指向以空字符终止的数组。
 
①这个数组的数据是临时的,因为是指针来着,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中。注意。看下例:
 
const char*
 c;
string
 s="1234";
c
 = s.c_str(); 
cout<<c<<endl;
//输出:1234
s="abcd";
cout<<c<<endl;
//输出:abcd 
其实上面的c = s.c_str(); 不是一个好习惯。既然c指针指向的内容容易失效,这就要用到strcpy等函数(推荐)。
 
//const
 char* c; //①
//char*
 c;       //②
//char
 c[20]; 
char*
 c=new char[20];
string
 s="1234";
//c
 = s.c_str(); 
strcpy(c,s.c_str());
cout<<c<<endl;
//输出:1234
s="abcd";
cout<<c<<endl;
//输出:1234
② c_str()返回一个客户程序可读不可改的指向字符数组的指针,不需要手动释放或删除这个指针。
 
 
 
data():
 
与c_str()类似,但是返回的数组不以空字符终止。
 
 
 
copy(p,n,size_type _Off = 0):
 
从string类型对象中至多复制n个字符到字符指针p指向的空间中。默认从首字符开始,但是也可以指定,开始的位置(记住从0开始)。返回真正从对象中复制的字符。------用户要确保p指向的空间足够保存n个字符。
 
 
 
3.fread函数和fwrite函数
 
 
1.函数功能: 用来读写一个数据块。
2.一般调用形式
 
  fread(buffer,size,count,fp);
 
  fwrite(buffer,size,count,fp);
 
  (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
 
  (2)size:要读写的字节数;
 
  (3)count:要进行读写多少个size字节的数据项;
 
  (4)fp:文件型指针。
 
注意:1. 完成次写操(fwrite())作后必须关闭流(fclose());
 
          2. 完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出;
 
          3. fprintf() : 按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次操作写入到文件的字节数。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;str1:10字节;str2: 10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。
 
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,