上周参加了学校的全国高校计算机能力挑战赛校赛,大题四题会三题,不会的卡在了输入这!!!(死了),真的好伤心(555,所以自学了一下。

常规输入输出:

1.cin:

cin是C++中,标准的输入流对象。
注意!!:cin以空格、tab、换行符作为分隔符。

#include <iostream>
using namespace std;
int main() {
    int num;
    cin >> num;
    cout << num << endl;
    return 0;
}

2、getline():

cin在输入字符串的时候,如果有空格,那么就会打断输入。因此就需要getline()函数了。
getline只有在遇到换行符才会终止输入。
格式为: getline(cin,字符串名)

#include <iostream>
#include <string>
using namespace std;
int main() {
    string str;
    getline(cin, str);
    cout << str << endl;
    return 0;
}

3、getchar():

getchar字如其名,是从缓冲区获取第一个字符。

#include <iostream>
using namespace std;
int main() {
    char ch;
    ch = getchar();
    cout << ch << endl;
    return 0;
}

数组的输入输出:

1.输入固定长度:

#include <iostream>
#include <vector>
using namespace std;
int main() {
    int n;
    cin >> n;
    vector<int> vec(n);
    for (int i = 0; i < n; i++) {
        cin >> vec[i];
    }
    for (int i = 0; i < vec.size(); i++) {
        cout << vec[i] << ' ';
    }
    return 0;
}

使用vector容器的话,也可以通过迭代器输出:

for (vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
        cout << *it << ' ';
}              //输出部分,以迭代器形式输出

也可以通过algorithm库的for_each函数和lambda表达式输出:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    int n;
    cin >> n;
    vector<int> vec(n);
    for (int i = 0; i < n; i++) {
        cin >> vec[i];
    }
    for_each(vec.begin(), vec.end(), [](int a) {
        cout << a << " ";
        });
    return 0;
}

2.长度不固定:

我就是在这里卡了啊(呜呜呜
完全不知道怎么写。
可以通过while(cin >> m){}解决:

#include <iostream>
#include <vector>
using namespace std;
int main() {
    int num;
    vector<int> vec;
    while (cin >> num) {
        vec.push_back(num);
        if (getchar() == '\n') break;
    }
    for (int i = 0; i < vec.size(); i++) {
        cout << vec[i] << ' ';
    }
    return 0;
}

空格不会输入进数组,在识别到换行符就结束。

3.以非空格隔开的元素输入

以字符串输入,然后在对其进行处理。

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
    string str;
    getline(cin, str);
    vector<int> vec;
    int fast = 0;
    for (int slow = 0; slow < str.size(); slow++) {
        fast = slow;
        while (str[fast] != ',' && fast < str.size()) {
            fast++;
        }
        string tmp = str.substr(slow, fast - slow);
        vec.push_back(stoi(tmp));
        slow = fast;
    }
    for (int i = 0; i < vec.size(); i++) {
        cout << vec[i] << ' ';
    }
    return 0;
}

就这么多啦,当然还有sstream库的stringstream等,但不常用,可以自行取看看
周五弄个大的,数据库的数据分析到实施全过程。


 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐