输入输出总结
做大厂编程题解决的第一个问题就是输入,华为的题输入还是挺人性化,不会太难,大疆的输入偏难一点
本人因工作原因一直用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;
}
(未完,待续)

