1.不带空格的字符串,直接cin即可
string s; cin >> s;
2.带空格的字符串,需要使用getline
string s; getline(cin,s);
3.按行输入,其中第一行是第二行输入的总数
/*输入 5 1 2 3 4 5 */ int nums; cin>>nums; vector<int> v; int tmp; for(int i=0;i<nums;++i){ cin>>tmp; v.push_back(tmp); } for(int i=0;i<nums;++i){ cout<<v[i]<<endl; }
或者是
/*输入 5 1 2 3 4 5 */ int nums; cin>>nums; vector<int> v(nums); for(int i=0;i<nums;++i){ cin>>v[i]; } for(int i=0;i<nums;++i){ cout<<v[i]<<endl; }
4.第一行读入一个整数n,接下来n行,每行两个数值
/*输入 2 1 2 3 4 输出: 12 34 */ int n; cin>>n; vector<int> v1(n); vector<int> v2(n); for(int i=0;i<n;++i){ cin>>v1[i]>>v2[i]; } for(int i=0;i<n;++i){ cout<<v1[i]<<v2[i]<<endl; }
5. cin.geline()
#include <iostream> using namespace std; main () { char m[20]; cin.getline(m,5); cout<<m<<endl; } //输入:jkljkljkl //输出:jklj //接收5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出; //如果把5改成20: //输入:jkljkljkl //输出:jkljkljkl //输入:jklf fjlsjf fjsdklf //输出:jklf fjlsjf fjsdklf
6.输出需要保留小数位数时
#include<iomanip> //在setprecision()后边的为需要保留的变量,参数为几位 cout<<setprecision(3)<<ans<<endl;
7. 输入输出解除绑定避免超时
//在main函数开头添加 ios::sync_with_stdio(false),cin.tie(NULL);
8. 注意,在联合使用getline和cin时,要注意cin不会清空读取缓冲区,导致getline会无法读取最后一行。可以用以下方式进行消除(cin.ingnore(int,'\n')或者cin.sync()均可)
int main(){ int n; cin>>n; vector<string> nums(n);
//cin.sync(); cin.ignore(10,'\n'); for(int i=0;i<n;++i){ getline(cin, nums[i]); } for(int i=0;i<n;++i){ cout<<nums[i]<<endl; } return 0; }