cout 是在标准库中定义的输出流对象,‘<<’是重定向符。
endl是叫操纵符,其实是个模板函数,在输出流中写入换行符,并且刷新输出缓存,而‘\n‘只是往输出流中写入了换行符,没有刷新输出缓存,在输出到屏幕时,没有明显的区别,但是如果写入到文件时,‘\n‘只是把内容写道了缓存中,并没有写入到磁盘,而endl则把内容写入到了磁盘。
如果两个加引号的字符数组中间没有除空格和注释以外的字符,预处理器会自动把两个字符数组连接起来,并成一个字符数组。因为预处理器会去掉空行、空格、和注释,所以两个字符数组中有这几种字符是没有关系,仍然可以链接。
c++中的强制转换比c更加直观,看起来像调用函数,然后传个参数。如C++中用char(17),而C语言中要这样写:char(17).
输入操纵符可以读入参数类型相同的输入,如果类型不一样,并没有什么出错处理,但是会从输入中从头截取相同类型的输入,比如输入123abc,会得到123.
1. C++保留C的输入输出单个字符的函数
putchar(c) —— 字符输出
getchar() ——字符输入函数
2. scanf()、printf()函数的输入和输出
scanf(格式控制,输出表列);
printf(格式控制,输出表列);
3. 标准输入输出流cin、cout
包括头文件#include<iostream>
输入输出流的控制符要加入头文件 #include<iomanip>
cout<<"dec:"<<dec<<a<<endl; //以十进制的形式输出整数 oct/hex
cout.put(97); //显示a字符--使用cout的成员函数put(c)
cin成员函数get()
(1) 不带参数的
char c=cin.get(); //用cin的成员函数get()从键盘读入一个字符到c中去
(2) 带一个参数的
cin.get(ch); //从输入的流中接受一个字符,并赋给字符变量ch
(3) 带三个参数的
cin.get(字符数组,字符的个数n,终止字符)
例程:
1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 char ch[20]; 7 cout<<"input a string:"<<endl; 8 cin.get(ch,10,‘/n‘); /*取得输入流的前10-1=9个字符赋值给ch数组的前9个元素,并规定换行符为为输入流的终止结束符*/ 9 cout<<ch<<endl; 10 return 0; 11 }
如输入:1 2 34567890 //按换行键终止流输入
则输出:1 2 34567 //只读得前9个送入ch数组中
cin的成员函数getline() ——从输入流中读入一行字符
cin.getline(字符数组(或字符指针),字符的个数n,终止字符)
例程:
1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 char ch[20]; 7 cout << "input a string:"; 8 cin >> ch; 9 cout << ch << endl; 10 for(int i = 0; i < 20; ++i) 11 { 12 cout << i << ":" << ch[i] << ‘ ‘; 13 } 14 cin.getline(ch, 20, ‘/‘); //读取19个字符到ch数组或遇到‘/‘结束 15 cout << ch << endl; 16 for(int i = 0; i < 20; ++i) 17 { 18 cout << i << ":" << ch[i] << ‘ ‘; 19 } 20 cin.getline(ch, 20); //读取19个字符到ch数组或遇到‘/n‘结束,遇到‘/‘仍作为字符读入 21 cout << ch << endl; 22 for(int i = 0; i < 20; ++i) 23 { 24 cout << i << ":" << ch[i] << ‘ ‘; 25 } 26 return 0; 27 }
cin的成员函数eof() —— 在输入流中读取数据,如果到达末尾(遇到文件结束符),则eof()返回真,否则为假.
例程:
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 char c; 7 while(!cin.eof()) //若未遇到文件结束符 8 if((c=cin.get()) != ‘ ‘) //检查读入的字符是否为空格字符 9 cout.put(c); 10 return 0; 11 }
C++学习研究之一— —输入输出