C++记录(2)

C++记录

隔了好久了才做进一步的记录,不过会将最近学的全部写下
记几个比较重要的点

C++中比较重要的转义字符

\r 回车符,光标移到本行的开头
\ ’ " 分别输出符号\ ’ "

运算符

1、 位运算符

<< (按位左移)、>> (按位右移)、& (按位与)、|(按位或)、^(按位异或)、~(按位取反)

运算符优先级(常用的)

按顺序如下
1、()、.(成员选择(对象))、->(成员选择(指针))、
2、++、–、-(负号)、、&、!、~、sizeof
3、/、
、%
4、+、-
5、>>、<< (左右移)
6、==、!=
7、&
8、^
9、|
10、&&
11、||
12、?:
13、,(逗号运算符)

输出运算符中值得注意的部分

输出运算符为cout
在C++中要更改输出是数字的小数点位数时(即为精确到几位小数点)
使用如下代码

#include<iomanip> //这是要更改时所需要的头文件
...
cout<<fixed<<setprecision(n); //n为要设置的小数点后n位
cin 的常用读取方法

使用cin从标准输入读取数据时,通常用到的方法有cin>>,cin.get,cin.getline。

值得注意的是
(1)cin>>等价于cin.operator>>(),即调用成员函数operator>>()进行读取数据。
(2)当cin>>从缓冲区中读取数据时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,cin>>会将其忽略并清除,继续读取下一个字符,若缓冲区为空,则继续等待。但是如果读取成功,字符后面的分隔符是残留在缓冲区的,cin>>不做处理。
(3)不想略过空白字符,那就使用 noskipws 流控制。比如cin>>noskipws>>input;

#include<string>
#include<iostream>
using namespace std;
int main()
{
	char a;
	int b;
	float c;
	string str;
	cin>>a>>b>>c>>str;
	cout<<a<<b<<c<<str<<endl;
	string test;
	getline(cin,test);//这是不会阻塞的
	cout<<"test:"<<test<<endl;
	system{"pause");
	return 0;
}
cin.get的用法

该函数有有多种重载形式,分为四种格式:无参,一参数,二参数,三个参数。常用的的函数原型如下:

int cin.get();
istream& cin.get(char& var);
istream& get (char *s,streamsize n);
istream& get (char *s,streamsize n, char delim)

其中streamsize 在VC++中被定义为long long型。另外,还有两个重载形式不怎么使用,就不详述了,

cin.get读取一个字符

读取一个字符,可以使用cin.get或者cin.get(var),示例代码如下:

#include<iostream>
using namespace std;
int main()
{
	char a;
	char b;
	a=cin.get();
	cin.get(b);
	cout<<a<<b<<endl;
	system("pause");
	return 0;
}

结果输出一致

cin.get读取一行

读取一行可以使用istream& get ( char* s, streamsize n )或者istream& get ( char* s, size_t n, streamsize delim )。二者的区别是前者默认以换行符结束,后者可指定结束符。n表示目标空间的大小。

#include<iostream>
using namespace std;
int main()
{
	char a;
	char array[20]=(NULL};
	cin.get(array,20);
	cin.get(a);
	cout<<array<<" "<<(int)a<<endl;
	system("pause");
	return 0;
}

注意:(1)从结果可以看出,cin.get(array,20);读取一行时,遇到换行符时结束读取,但是不对换行符进行处理,换行符仍然残留在输入缓冲区。第二次由cin.get()将换行符读入变量a,打印输入换行符的ASCII码值为10。这也是cin.get()读取一行与使用getline读取一行的区别所在。getline读取一行字符时,默认遇到’\n’时终止,并且将’\n’直接从输入缓冲区中删除掉,不会影响下面的输入处理。
(2)cin.get(str,size);读取一行时,只能将字符串读入C风格的字符串中,即char*,但是C++的getline函数可以将字符串读入C++风格的字符串中,即string类型。鉴于getline较cin.get()的这两种优点,建议使用getline进行行的读取。关于getline的用法,下文将进行详述。

cin.getline读取一行

函数作用:从标准输入设备键盘读取一串字符串,并以指定的结束符结束。函数原型有两个:istream& getline(char* s, streamsize count); //默认以换行符结束istream& getline(char* s, streamsize count, char delim);
使用示例:

#include<iostream>
using namespace std;
int manin()
{
	char array[20]={NULL};
	cin.getline(array;20);//或者指定结束符,使用下面一行
	//cin.getline(array,20,'\n');
	cout<<array<<endl;
	system("pause");
	return 0;
}

注意,cin.getline与cin.get的区别是,cin.getline不会将结束符或者换行符残留在输入缓冲区中。

猜你喜欢

转载自blog.csdn.net/qq_39750907/article/details/103516433