C++ 琐碎

注意用fstream创建文件时,不能指定ios::in 参数,否则当文件不存在时不会自动创建

 
char *fileName = "C://input.txt" ; 
fstream fs(fileName, ios::in | ios::out, ios::trunc);  

fileName对应的文件不存在时,不会自动创建

但是如果写成

 
char *fileName = "C://input.txt" ; 
fstream fs(fileName, ios::out, ios::trunc) ;  

如果文件不存在那么就会自动创建一个

 

定位到了文件之后重新定位到屏幕输出
freopen("CON", "r", stdin); 
freopen("CON", "r", stdout);   //CON  是控制台的另外一个设备文件名

cout带缓冲输出,printf不带缓冲输出??

输入字符串时, cin.get不会忽略有效字符前的字符,同时在输入结束时会将\n留在输入流中
类似于scanf?

scanf之后再genline(cin, str)的话, str也是空字符串。

能将整数转换为字符串而且与ANSI标准兼容的方法是使用sprintf()函数
int num = 100;
char str[25];
sprintf(str, "%d", num);

1.注意 如果格式字符串中存在空格 scanf则表示可以跳过一切空白字符 包括空格 换行符 制表符等

2.在C语言中,接受输入单个字符的函数如scanf、getchar()等都有一个毛病, 就是程序接受完用户输入的字符后并没有清空键盘输入缓冲区(或者说标准输入流),,因此当用户输完字符和回车后,回车字符还留在标准输入流中,而gets函数又恰好从缓冲区的当前字符开始接收输入,这样,它接收的到第一个字符就是上次输入遗留下来的回车符号,于是程序又会把它作为结束输入的标志,不再接受用户的键盘输入。     而C++的输入流就改正了这个毛病,接受完后自动清空输入流。 
语句fflush(stdin);的作用就是清空当前的标准输入流(即键盘缓冲区。)

3.getline(ss, str, ' '); getline分隔字符串

4.如果在不知道内存具体需求的时候,使用deque绝对是比vector好的

5.c++清空输入缓冲区 cin.clear() cin.sync()

6.一个无向图存在欧拉回路,当且仅当该图所有顶点度数都是偶数

7.程序员只能为类类型或枚举类型的操作数定义重载操作符

8.不能简单的把指针理解为地址,而应该是指向一块内存区域的起始地址。指向区域的大小视指针变量的类型而定。

extern  void  func()
{
    printf( "111\n" );
     int  a[11];
    printf( "a=%d\n" , a);
    printf( "&a=%d\n" , &a);
    printf( "a+1=%d\n" , a+1);
    printf( "&a+1=%d\n" , &a+1); 
    //&a指向的是int[11]类型的指针变量,区域是int*11
    // int a[11] 变形为 int* (&a)[11]
}
结果:
111
a=4455100
&a=4455100
a+1=4455104
&a+1=4455144
请按任意键继续. . .

9.return与exit()的区别

调用exit()函数会 结束当前进程,同时 删除子进程所占用的内存空间,把返回信息传给父进程。
return仅表示调用堆栈的返回,其作用是返回函数值,并且推出当前执行的函数体,返回到函数的调用处。
在main()函数中执行return n和exit(n)是等价的。

10. 指针数组与数组指针

int *p[8], 指针数组,p是数组元素为指针的数组, 本质为数组,p先于[]结合,说明p是一个数组,然后再与*结合说明数组p的元素是指向整型数据的指针。

int (*p)[8],p先与*组合,形成一个指针,该指针指向的是有8个整型元素数组,p即为指向数组首元素地址的指针,其 本质为指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值