2.积累

  1. getline函数
    函数原型: istream& getline ( istream &is , string &str , char delim );
    istream &is 表示一个输入流;
    string &str 表示把从输入流读入的字符串存放在这个字符串中;
    char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为’\n’,也就是回车换行符(遇到回车停止读入);
string line;
getline(cin, line, '#');
cout << line << endl;

结果图
输入:Hello CBird # How Are You
输出:Hello CBird
当读入到#时,读取结束。

string line;
getline(cin, line);
cout << line << endl;

结果图
不加‘#’结束符判断时,默认以 回车换行 读取结束


当用在while(getline(cin,line))语句中
默认回车符停止读取line, 按 Ctrl+Z 或键入 EOF回车 即可退出循环。
首先getline从标准输入设备上读入字符,然后返回给输入流cin,while判断语句的真实判断对象是cin,判断当前是否存在有效的输入流。
误以为while判断语句的判断对象是line(也就是line是否为空),然后想通过直接回车(即输入一个空的line)跳出循环,却发现怎么也跳不出循环。因为回车只会终止getline()函数的读入操作。getline()函数终止后又进行while()判断(即判断输入流是否有效,输入流当然有效,满足条件),所以又运行getline()函数,跳不出循环。


  1. #pragma
    一般用法: #pragma parameter
    1)#pragma message
    待补充。。。
    2)#pragma once
    保证头文件只被编译一次
    3)#pragma pack
    能够改变编译器的默认对齐方式内存对齐方式
    C语言中的内存对齐,计算机内部,默认是4字节对齐
    #pragma pack(1),按照1字节对齐
    待补充
    4)#pragma comment

  2. _t 和 _T

  3. memcpy memset等函数
    函数定义在**<string.h>**头文件中

函数原型: void *memcpy(void *dest, const void *src, size_t n);

函数功能: 从src的开始位置拷贝n个字节的数据到dest。如果dest存在数据,将会被覆盖。memcpy函数的返回值是dest的指针。
用法:(1)可以拷贝任何类型的对象,因为函数的参数类型是void*(未定义类型指针),也就是说传进去的实参可以是int*,short*,char等等。
但是由于函数拷贝的过程是一个字节一个字节的拷贝的,所以实际操作的时候要把void
强制转化为char*,这样在指针加的时候才会保证每次加一个字节


函数原型:extern void *memset(void *buffer, int c, int count)
				  //buffer:为指针或是数组,
 				  //c:是赋给buffer的值,
				  //count:是buffer的长度.
				  void *memset(void *s,   int c, size_t n);

函数功能:将指针变量 s所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。
作用:在一段内存块中填充某个给定的值。因为它只能填充一个值,所以该函数的初始化为原始初始化,无法将变量初始化为程序中需要的数据。用memset初始化完后,后面程序中再向该内存空间中存放需要的数据。


区别:
memset主要应用是初始化某个内存空间。
memcpy是用于copy源空间的数据到目的空间中。
strcpy用于字符串copy,遇到‘\0’,将结束。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值