一、cin
最基本的读入函数,从缓冲区中读入一个数字、一个标点或一个字符串,遇到空格、回车、制表符等结束。
#include <iostream>
using namespace std;
int main(){
char s[20];
cin >> s;
cout << s << endl;
}
输入:abcabcabc
输出:abcabcabc
输入:abc abcd
输出:abc
二、cin.get()
2.1 读取一个字符
#include <iostream>
using namespace std;
int main(){
char ch;
ch = cin.get();
// 也可以写成 cin.get(ch);
cout << ch << endl;
}
输入:abcd
输出:a
2.2 从缓冲区读取长度为n-1的字符串,可以读空格,遇到回车提前结束,不读取回车
#include <iostream>
using namespace std;
int main(){
char s[10];
cin.get(s, 10);//字符数组、接收字符数n
//最多读取n-1个字符,因为要留一个给'\0'
cout << s << endl;
return 0;
}
输入:abc abc
输出:abc abc
输出:1234567890
输出:123456789 //只能读取9个字符,留一个'\0'
三、cin.getline()
3.1 从缓冲区读取长度为n-1的字符串,可以读空格,遇到回车提前结束,不读取回车(同2.2)
#include <iostream>
using namespace std;
int main(){
char s[10];
cin.getline(s, 8);//最多读取n-1个字符,要留一个给'\0'
cout << s << endl;
return 0;
}
输入:aaa bb
输出:aaa bb
输入:12345678
输出:1234567 //只读取n-1个字符
3.2 cin.getline()实际上有三个参数,cin.getline(字符指针(char*), 字符个数(int), 结束符(char))
当第三个参数省略时,系统默认为'\0'。
#include <iostream>
using namespace std;
int main(){
char s[20];
cin.getline(s, 10, 'd');
cout << s << endl;
return 0;
}
输入:abcabcabc
输出:abcabcabc
输入:abcdaaa
输出:abc //读到'd'终止
四、getline()
接收一行字符,可以读取空格
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
getline(cin, str);
cout << str << endl;
return 0;
}
输入:abc abcd
输出:abc abcd
getline()和cin.getline()相似,但cin.getline()属于istream流,getline()属于string流
五、gets()
c语言函数,读取一行字符,可以读空格,遇到回车结束。(头文件<stdio.h>或<cstdio>)
在C++14中已被弃用。
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
char s[21];
gets(s);
cout << s << endl;
return 0;
}
输入:aaa bbb
输出:aaa bbb
六、getchar()
c语言函数,从缓冲中读取一个字符
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
char ch;
ch = getchar();
cout << ch << endl;
return 0;
}
输入:123
输出:1