C++语言学习——LRJ入门经典笔记

1.scanf的输入格式,空格、TAB和回车符都是无关紧要,所以按Enter键并不意味着输入结束。

告诉程序输入结束的方式:

在windows下,输入完毕后先按Enter键,再按Ctrl+Z键,最后再按Enter键。

在linux下,输入完毕后按Ctrl+D键

2.gcc 编译选项

-Wall指出警告

-ansi 判断是否和ANSI冲突

-pedantic 比ansi更加严格

-lm 链接数学库, C++编译器会自动链接

-DDEBUG 编译时定义符号DEBUG,可以换成其它,如-DLOCAL将定义符号LOCAL

3.两种使用文件输入输出的方法:重定向和fopen:

重定向示例:

freopen("data.in","r",stdin);
freopen("data.out","w",stdout);

fopen示例:

#include<stdio.h>
FILE *fin, *fout;
fin = fopen("data.in", "rb");
fout = fopen("data.out", "wb");
fscanf(fin, "%d", &x);
fprintf(fout, "%d", x);
fclose(fin);
fclose(fout);

4.使用printf和scanf输入输出long long在linux中gcc很统一的用%lld;在windows中,MinGW的gcc和VC6都需要用%I64d,但VS2008却是用%lld

5.可以使用#define A B程序中的A全部替换成B

6.比较大的数组应尽量声明在main函数外

7.使用fgetc(fin)可以从打开的文件fin中读取一个字符。一般情况下应当检查它不是EOF后再转换成char值。

从标准输入输出取一个字符用getchar,相当于fgetc(stdin);

8.fgets(buf, MAXN, fin)将读取完整的一行放在字符数组buf中,应当保证buf足够存放下文件的一行内容。除了在文件结束前没有遇到'\n'这种特殊情况外,buf总是以‘\n’结尾。当一个字符都没有读到时,fgets返回NULL。

fgets相比gets更安全,有MAXN限制。

getline: istream& getline(istream &is, string &str, char delim)

      istream& getline(istream &is, string &str)这种情况delim为换行

    getline会读取delim并丢弃。

  例如getline(cin, name,'\n');

istream::getline :istream& getline(char *s, streamsize n) 这种情况delim为换行

         istream& getline(char *s, streamsize n, char delim)

   例如cin.getline(s,100,'\n');

9.头文件ctype.h中定义的isalpha,isdigit,isprint等工具可以用来判断字符的属性,而toupper、tolower等工具可以用来转换大小写。

10.string.c_str()返回的内容是只读的。

11.使用assert.h中的assert宏来限制非法函数调用

assert(x>0);

当x≤0时代码将异常终止。

12.gdb用bt(backtrace)命令打印所有栈帧信息,up命令选择上一个栈帧。

 

posted on 2015-08-28 22:31  jxzheng  阅读(1733)  评论(0编辑  收藏  举报

导航