cin>>
用法1:输入一个数字或字符
用法2:接收一个字符串,遇“空格”、“TAB”、“回车”就结束
cin.getline()
cin.getline(str,length+1)
接收一个字符串,可以接收空格并输出,超过length的不计入
#include <iostream>
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<<m<<endl;
}
输入:aaaaa
输出:aaaa
接收5个字符到m中,其中最后一个为’\0’,所以只看到4个字符输出;
如果把5改成20:
输入:aaaaaaaa
输出:aaaaaaaa
输入:aaaa aaaa aaaa aaaa
输出:aaaa aaaa aaaa aaaa
延伸:
1、cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符)
2、当第三个参数省略时,系统默认为’\0’
3、如果将例子中cin.getline()改为cin.getline(m,5,‘a’);当输入aaaaa时输出aaaa.
getline()
getline(cin,str)
读入整行字符串放入str中,需要使用头文件#include<string>
#include<iostream>
#include<string>
using namespace std;
int main ()
{
string str;
getline(cin,str);
cout<<str<<endl;
}
输入:jkljkljkl
输出:jkljkljkl
输入:jkl jfksldfj jklsjfl
输出:jkl jfksldfj jklsjfl
printf与scanf函数:
scanf(“%s”,&数组变量名)
-
对string类对象无法使用,只能由此输入字符数组
-
空格,tab,回车被视为输入项间隔,遇到这三个就结束
-
需要加头文件#include<cstdio>
printf(“%0.1f\n”,re);
- 浮点数保留一位小数
注意
-
当同时使用cin>>,cin.getline()时,需要注意的是,在cin>>输入流完成之后,需要使用cin.get()消除换行符带来的影响
-
cin.getline(str,length+1)与getline(cin,str)是截然不同的函数
#include<iostream>
using namespace std;
int main() {
while(true) {
int n;
char c[100][100];
cin>>n;
cin.get();
for(int i = 0; i < n; ++i) {
cin.getline(c[i],20);
}
for(int i = 0; i < 10; ++i) {
for(int j = 0; j < 10; ++j) {
printf("%c",c[i][j]);
}
printf("\n");
}
}
return 0;
}
input:
3
abdcd
dfs * )
地方
output:
abdcd
dfs * )
地方
#include<iostream>
#include<string>
using namespace std;
int main() {
while(true) {
int n;
char c[100][100];
cin>>n;
getchar();//消除换行符的影响
for(int i = 0; i < n; ++i) {
string str;
getline(cin,str);
for(int j = 0; j<str.size(); ++j) {
c[i][j] = str[j];
}
}
for(int i = 0; i < 10; ++i) {
for(int j = 0; j < 10; ++j) {
printf("%c",c[i][j]);
}
printf("\n");
}
}
return 0;
}
输入:
3
阿道夫3343*
34934大幅度s*
敌方角色)*&
输出:
阿道夫3343
34934大幅
敌方角色)