输入输出总结
做大厂编程题解决的第一个问题就是输入,华为的题输入还是挺人性化,不会太难,大疆的输入偏难一点
本人因工作原因一直用c语言,现在专用C++后一直存在一个问题,数组究竟用c那种的char a[];int b[][] 还是用容器string,vector,使用C++后众多实例告诉我,最好用容器(前提下你要对容器的操作函数很数据,其实用多就熟了,而且很方便),C++不用容器,模板类那和C有什么区别...
输入数据的时候cin 默认有空格,或者换行就认为一个输入结束了!
1.字符串的输入
常规的输入的输入
int main() { string str; while(cin>>str){ //对应的是输入wffsdfsdf 中间没有空格的字符串 } while(getline(cin,str)) //获取整一行的数据 sfwe fwefew sfsefew gtrger 4567 就算有空格都会输进去,所以使用后一般后面还要继续截取数据 { } }
字符串中间需要截取数据如:
123,485,486,856
A1;B52;C4896;SFEQ
看到这种输入真的会让人头痛
#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; int main(){ string str; while(cin>>str){ int len=0; //用来获取截取的长度 vector<string> vec; for(int i=0;i<str.size();i++){ while(str[i]!=';'&&str[i]!='\0'){ //获取非;的一连串字符 len++; i++; //这里记得移动i } vec.push_back(str.substr(i-len,len));//使用了substr函数截取想要的数据 len=0; //截取长度归零 } for(auto &c:vec){ cout<<c<<endl; } } return 0; }
2.数组的输入
先说矩阵的输入,如果是以前的我会直接用int a[][],现在用C++,一开始嫌麻烦,后面真香系列
//如走迷宫要输入以下矩阵,像华为的题一般会告诉你多少行n,多少列m的数据 4 8 4 6 7 8 1 1 5 7 8 9 7 8 9 1 int main(){ int n,m; //行列 while(cin>>n>>m){ vector<vector<int> > vec(n,vector<int>(m,0)); //很长对吧,刚开始都忘记怎么定义 for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>vec[i][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cout<<vec[i][j]<<' '; } cout<<endl; } } return 0; }
常规的数输入
//题目如果告诉你有多少个数需要输入n,在利用for循环输入就行 4 123 756 456 487 int main(){ int n; //一次测试用例输入多少个数 while(cin>>n){ vector<int> vec(n,0);//两种输入方式,这种比较简洁,前提是定义的时候要提早写长度是多少 for(auto &c:vec){ cin>>c; } /* vector<int> vec; //这种需要个中间变量输入,数据添加到最后就行 for(int i=0;i<n;i++){ int temp; cin>>temp; vec.push_back(temp); */ } } return 0; }
(未完,待续)