ACM-C++中的输入问题
本文最后更新于:December 3, 2021 pm
C++中的几种输入方式,以及记录一些在输入输出中可能会遇到的让人头大的坑。
一.输入带有空格的整行英语字母
1.cin
2.cin.getline()
| 接收一个字符串,可以接收空格并输出。可以设置自定义结束符。 cin.getline(接收字符串的变量,接收字符个数,结束字符) 当第三个参数省略时,系统默认为'\0'。接收n个字符到m中,其中最后一个为'\0',所以只看到n-1个字符输出. 例子 cin.getline(m,5,'a'); 当输入jlkjkljkl时 输出 jlkj 输入jkaljkljkl时,输出 jk
|
3.getline()
| 接收一个字符串,可以接收空格并输出,需包含头文件“#include<string>” string str; getline(cin,str);
|
输入陨石坑
要求:输入一个数n,再输入一句由n个单词构成英文句子(包括空格)。用C++中的输入输出实现。
错误的输入方式一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| int n; cin>>n; cout<<n<<endl; string s; getline(cin,s); cout<<s<<endl;
25 abcd
25
25 abcd
25 abcd
|
错误的输入方式二:
| int n; cin>>n; cout<<n<<endl; getchar(); string s; getline(cin,s); cout<<s<<endl;
25 abcd
25
|
正确的输入方式:
| int n; cin>>n; cout<<n<<endl; cin.get(); string s; getline(cin,s); cout<<s<<endl;
25 abcd
25 abcd
|
也可以定义两个string来实现
| int n; cin>>n; cout<<n<<endl; string s,c; getline(cin,c); getline(cin,s); cout<<c<<endl; cout<<s<<endl;
5 sfje few fwa
sfje few fwa
|
二.输入二维字符数组
C语言实现
代码一,用%s输入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| char a[minn][minn]; int n,m; while(cin>>n>>m){ for(int i=0;i<m;++i){ scanf("%s",&a[i]); } printf("\n"); for(int i=0;i<m;++i){ for(int j=0;j<n;++j){ printf("%c",a[i][j]); } printf("\n"); } }
6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#.
6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#.
|
代码实现二,用%c输入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| char a[minn][minn]; int n,m; while(cin>>n>>m){ for(int i=0;i<m;++i){ for(int j=0;j<n;++j){ scanf("%c",&a[i][j]); } getchar(); } printf("\n"); for(int i=0;i<m;++i){ for(int j=0;j<n;++j){ printf("%c",a[i][j]); } printf("\n"); } }
6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#.
6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#.
|
C++实现
代码实现一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| char a[minn][minn]; int n,m; while(cin>>n>>m){ for(int i=0;i<m;++i){ for(int j=0;j<n;++j){ cin>>a[i][j]; } }
cout<<endl; for(int i=0;i<m;++i){ for(int j=0;j<n;++j){ cout<<a[i][j]; } cout<<endl; } }
6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#.
6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#.
|
代码实现二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| char a[minn][minn]; int n,m; while(cin>>n>>m){ for(int i=0;i<m;++i){ cin>>a[i]; }
cout<<endl; for(int i=0;i<m;++i){ for(int j=0;j<n;++j){ cout<<a[i][j]; } cout<<endl; } }
6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#.
6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#.
|
持续更新中······