哈哈,今天终于开始更新博客了(^▽^)一时不知道写什么好,就写一下最近学到的东西吧!
输出流与输入流
- cout是一个输出流对象,它是“console out”(控制台输出)的缩写,又称为插入运算符,是输出数据的,是属于basic_ostream类中的对象。而ostream类在iostream头文件中定义。
- cin是一个输入流对象,又称为提取操作符,用来获取用户外部输入的数据,当用户进行键盘输入时,对应的字符将输入到操作系统的键盘缓冲区,当用户点击”Enter”键时,操作系统把键盘缓冲区的内容传输到cin流的内部缓冲区,“>>”操作符随后从这个缓冲区提取需要的信息,它是属于istream类中的对象。
- 在C++中左移,右移操作符进行了重载。
下面列举一些cin和cout的用法:
cin.ignore() & cin.getline()
1 2 3 4
char buf[20]; cin.ignore(7); cin.getline( buf, 10 ); cout << buf << endl;
使用cin.ignore(7)在输入时会忽略输入的前7个字符。
- 使用cin.getline(buf, 10)在输入时只会得到前10个字符,注意这10个字符中还要包括’/0’。
cin.peek() & cin.get()
1 2 3 4 5 6 7 8 | char p; cout << "请输入一段文本: \n"; while( cin.peek() != '\n' ) { p = cin.get(); cout << p; } cout << endl; |
- cin.peek()函数的返回值是一个char型的字符,其返回值是指针指向的当前字符。
- cin.get()函数用来从指定的输入流中提取一个字符(包括空白字符),函数的返回值就是读入的字符。
cin.gcount() & cin.read()
1 2 3 4 5 6 7 8 | const int SIZE = 50; char buf[SIZE]; cout << "请输入一段文本: "; cin.read( buf, 20 ); cout << "字符串收集到的字符数为: " << cin.gcount() << endl; cout << "输入的文本信息是: "; cout.write( buf, 20 ); cout << endl; |
- cin.gcount()函数返回一个非格式化的提取方法读取的字符数,这以为着字符是由cin.get(),cin.getline(),cin.ignore()或cin.read()函数读取的,不是又提取操作符”>>”读取的。
- cin.read(buf,20)是读取长度为20的字符串给buf字符数组中,该字符串中包括了’\0’。
cout.precision() & cout.width()
1 2 3 4 5 6 7 8 | double result = sqrt(3.0); cout << "对 3 开方保留小数点后0 ~ 9 位,结果如下: \n" <<endl; for( int i=0; i <= 9; i++ ) { cout.precision(i); cout << result << endl; } cout << "当前的输出精度为: " << cout.precision() << endl; |
- cout.precision(i)函数设置当前输出精度为i,输出小数点后i-1位,第i位四舍五入。
1 2 3 4 5 6 7 8 9 10 | int width = 4; char str[20]; cout << "请输入一段文本: \n"; cin.width(5); while( cin >> str ) { cout.width(width++); cout << str << endl; cin.width(5); } |
- cin,width(n)读取长度为n的字符,注意最后一个字符为’\0’。
- cout.width(n)设置输出宽度为n,不足的用空格补齐。
名字空间
- cout这个输出流对象是在名字空间std中来定义的。
在使用时可以直接用指令using namespace std,然后再使用cout,或者直接使用std::cout。
std::cout<<"This is a test"<<endl
第一次写就先写到这了,希望以后自己能坚持下去!ヾ(◍°∇°◍)ノ゙