C++输入函数的应用
最近因為找工作的事情,在刷一些編程題,也陸陸續續參加了一些筆試,一般編程中使用的語言是C++,因為編程題會有時間的限制,C++的效率最高,不容易出現超時的問題所以使用最多的語言就是C++。
在編程中,其中最容易遇到的問題就是輸入問題。下面就討論一下C++常用的一些輸入函數。
概述
C++中幾個輸入函數有:
- cin
- cin.get()
- cin.getline()
- getline()
- gets()
- getchar()
cin
輸入數字,以“回車”或者空格結束
1
2
3int a,b;
cin>>a>>b; // 按行輸入對應的參數
cout<<a+b<<endl;輸入一個字符串,遇“空格”、“TAB”、“回車”都結束
1
2
3char a[20];
cin>>a;
cout<<a<<endl;
cin.get()
cin.get(str)可以用來接收字符,str為字符數組名。
1
2
3char ch;
ch=cin.get(); //或者cin.get(ch);只能獲取一個字符
cout<<ch<<endl;cin.get(str,n)用來接收一行字符串,可以接收空格,str為字符數組名,n為接收字符數目。
1
2
3char a[20];
cin.get(a,20); //有些類似getline。可以輸入多個單詞,中間空格隔開。
cout<<a<<endl;cin.get()沒有參數主要是用于舍棄輸入流中的不需要的字符,或者舍棄回車,彌補cin.get(字符數組名,接收字符數目)的不足.
cin.getline()
接受一個字符串,可以接收空格并輸出
1
2
3char m[20];
cin.getline(m,5); //與上面基本相同。
cout<<m<<endl;
2
3
4
5
輸入:jkljkljkl
輸出:jkljkljkl
輸入:jklf fjlsjf fjsdklf
輸出:jklf fjlsjf fjsdklf
getline()
接受一個字符串,可以接收空格并輸出,需包含#include<string>
1
2
3string str;
getline(cin,str);
cout<<str<<endl;
2
3
4
5
輸入:jkljkljkl //VC6中有個bug,需要輸入兩次回車。
輸出:jkljkljkl
輸入:jkl jfksldfj jklsjfl
輸出:jkl jfksldfj jklsjfl
gets()
接受一個字符串,可以接收空格并輸出,需包含#include<string>
1
2
3char m[20];
gets(m); //不能寫成m=gets();
cout<<m<<endl;
2
3
4
5
輸入:jkljkljkl
輸出:jkljkljkl
輸入:jkl jkl jkl
輸出:jkl jkl jkl
1
2
3
4
5
6
7
8
9
10
11
// 多維輸入
char m[3][20];
for(int i=0;i<3;i++)
{
cout<<"\n請輸入第"<<i+1<<"個字符串:"<<endl;
gets(m[i]);
}
cout<<endl;
for(int j=0;j<3;j++)
cout<<"輸出m["<<j<<"]的值:"<<m[j]<<endl;
getchar()
/接受一個字符,需包含#include<string>
1
2
3char ch;
ch=getchar(); //不能寫成getchar(ch);
cout<<ch<<endl;
2
3
4
輸入:jkljkljkl
輸出:j
//getchar()是C語言的函數,C++也可以兼容,但是盡量不用或少用;
常用的應用
輸入單個數字
1
2int a;
cin >> a;輸入多個數字
1
2
3
4
5
6
7
8
9
10
11
12
13
14// 默認是空格或者回車鍵為間隔
int a, b;
cin >> a >> b;
// 以逗號隔開的多個數字輸入
int n, m;
cin >> n;
}
if (cin.get() == ',') {
cin >> m;
}輸入一維數組(默認以空格為間隔),#include <vector>
1
2
3
4
5vector<int> arr(n, 0);
for (int i = 0; i < m; i++){
cin >> arr[i];
}輸入二維數組(默認以空格為間隔),#include <vector>
1
2
3
4
5
6
7vector<vector<int>> arr(m, vector<int>(n, 0));
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++){
cin >> arr[i][j];
}
}以,為間隔的輸入數組
1
2
3
4
5
6
7
8
9
10
11// 二維數組,以逗號為間隔
vector<vector<int>> S(n, vector<int>(m, 0));
for (int i = 0; i < n; i++){
cin >> S[i][0];
for (int j = 1; j < m; j++){
if (cin.get() == ',') {
cin >> S[i][j];
}
}
}輸入不定長的數組(檢測回車鍵)
1
2
3
4
5
6
7
8
9
10
11
12// 定義二維數組
vector<vector<int>> F(n, vector<int>(n, -1));
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int temp;
cin >> temp;
F[i][j] = temp;
if (cin.get() == '\n')
break;
}
}輸入字符串
1
2
3
4// 已知字符串的長度,注意最后一位是\0
char a[21];
cin >> a;
cout << a << endl;
輸入的時候需要加入越界檢測如下,需要0<=n<=100。
12
3
if ((n < 0) || (n > 100)) {
return 0;
}
參考:C++中輸入字符串的幾種方法
總結
以上是生活随笔為你收集整理的C++输入函数的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统知识——互斥和死锁
- 下一篇: visual c++ build too