标准输入流
cin>>x;
- 读入整型数时,以第一个非数字为终结
- 读入字符串时,以第一个空格,Tab 或换行符为终结
cin.getline(str,len,ch);
//读入一个字符串,ch 被从流中提出,但不存入 str
ch=cin.get();
//读入一个单独的字符
cin.ignore(len,ch);
//忽略一串字符,ch 同上
标准输出流
cout
//输出到标准设备
cerr
//输出错误信息
clog
//输出错误日志
- 流操纵算子
[1]整型数
int n;
cout<<hex<<n<<endl;
//16进制
cout<<dec<<n<<endl;
//10进制
cout<<oct<<n<<endl;
//8进制
[2]浮点数
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
double x = 1234567.89,y = 12.34567;
int n = 1234567;
int m = 12;
cout<<setiosflags(ios::fixed)<<setprecision(6)<<x<<endl<<y<<endl<<n<<endl<<m;
return 0;
}
- E表示法
E6 指的是10的6次方,即1后面6个0。
记住:d.dddE+n 指的是将小数点向右移 n 位。
之所以称为“浮点”,就是因为小数点可移动。 - cfloat 头文件
- wchar_t 可以存储系统扩展字符集中的任意成员。
[3]设置域宽
cin.width(5);
cin>>string;
cout<<string<<endl;
cin>>string;
cout<<string<<endl;
cout.put()
成员函数
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int main(){
cout<<'$'<<endl;
cout.put('$')<<endl;
return 0;
}
- C++ 语言赋予了字符特殊的含义
双引号字符用来分隔字符串字面值,
因此,不能把双引号放在字符串字面值中。
climits 中的符号常量
符号常量 | 表示 |
---|---|
CHAR_BIT | char 的位数 |
CHAR_MAX | char 的最大值 |
CHAR_MIN | char 的最小值 |
SCHAR_MAX | signed char 的最大值 |
SCHAR_MIN | signed char 的最小值 |
UCHAR_MAX | unsigned char 的最大值 |
SHRT_MAX | short 的最大值 |
SHRT_MIN | short 的最小值 |
USHRT_MAX | unsigned short 的最大值 |
INT_MAX | int 的最大值 |
INT_MIN | int 的最小值 |
LONG_MAX | long 的最大值 |
LLONG_MAX | long long 的最大值 |
字符串
1.面向行的输入:getline()
getline() 函数读取整行,它使用通过回车键输入的换行符来确定输入结尾。
要调用这种函数,可以使用 cin.getline() 。
cin.getline(str,20);
2.面向行的输入:get()
string 类简化了字符串合并操作。
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cfloat>
#include <cstdlib>
using namespace std;
int main(){
string str2 = "love china";
string str3;
str3 = str1 + str2;
str1+=str2;
cout<<str3<<endl;
return 0;
}
指针
使用 new 来分配内存
在C语言中,可以用库函数 malloc 来分配内存;
在C++中,又更好的方法——new 运算符。
程序员要告诉 new ,需要为哪种数据类型分配内存;
new 将找到一个长度正确的内存块,并返回该内存块的地址。
程序员的责任是将该地址赋给一个指针。
int * pn = new int;
new int 告诉程序,需要适合存储 int 的内存。
new 运算符根据类型来确定需要多少字节的内存。
然后,它找到这样的内存,并返回其地址。
接下来,将地址赋给 pn , pn 是被声明为指向 int 的指针。
现在,pn 是地址,而 *pn 是存储在那里的值。
将这种方法与将变量的地址赋给指针进行比较:
int higgens;
int * pt = &higgens;
在这两种情况下,都是将一个 int 变量的地址赋给了指针。
在第二种情况下,可以通过名称 higgens 来访问该 int ,
在第一种情况下,只能通过该指针进行访问。
- 使用 delete 释放内存
它使得在使用完内存后,能够将其归还给内存池,这是通向最有效的关键一步。
int * ps = new int; // allocate memory with new
... // use the memory
delete ps; // free memory with delete when done
警告:只能用 delete 来释放使用 new 分配的内存。然而,对空指针使用 delete 是安全的。