在ACM进行编程时候,需要自己输入数据,下面介绍输入情况,能满足绝大多数输入情况
int main() { int N; cin >> N; vector<int> data(N); for(int i = 0; i < N; ++i) { cin >> data(N); } return 0; }
二维数组也是如此
int main() { string str; stringstream ss; getline(cin, str, '\n'); ss << str; // 把字符串给数据流 vector<int> data; while(getline(ss, str, ' ')) { data.push_back(stoi(str)); } return 0; }
多行输入,外部嵌套个循环即可。
有无长度参照上面的情况,简单举个例子
int main() { int N; cin >> N; cin.get(); // 先使用cin,后面跟随getline需要先把回车\n消掉,才能读取下一行 vector<int> data(N); string str; stringstream ss; getline(cin, str, '\n'); ss << str; // 把字符串给数据流 while(getline(ss, str, ',')) { data.push_back(stoi(str)); } return 0; }
多维数组直接稍微扩展一下即可解决
string k; int n; cin >> n; // 输入行数 cin.get(); // 去除cin的回车 while (n--) { getline(cin, k, '\n'); stringstream ss; ss << k; string str; while (getline(ss, str, ',')) { cout << str << endl; } }