3.2
getline(cin,s);
cin>>s;
3.3
string类的输入运算符 碰到空白符会终止当前输入 ,而getline会将空白字符当做普通字符输入
3.4
string s,s2; cin>>s>>s2; if(s>=s2) cout<<s<<endl; else{ cout<<s2<<endl; }
3.5
string s,s1; while(cin>>s){ s1+=(s+" "); } cout<<s1<<endl;
3.6
string s="ceshi"; for(auto&c:s){ c=‘x‘; } cout<<s<<endl;
3.7
没有影响
3.8
三者实现的结果一样,while循环和for循环需要知道字符串的长度,而范围不需要
3.9
不正确,会产生未定义的行为,发生越界
3.10
string s="dada.dafd,dds"; for(auto&c:s){ if(!ispunct(c)) cout<<c; }
3.11
不合法,当在循环中要改变c得值时,c的类型为const string&
3.12
1.正确 2.类型不符 3.正确
3.13
1.0 2.10个元素 值为0 3.10个元素 值为42 4.1一元素,值为10 5.2个元素, 6.10个元素 7.10个元素 为hi
3.14
vector<int> temp; int i; while(cin>>i){ temp.push_back(i); }
3.15
vector<string> temp; string i; while(cin>>i){ temp.push_back(i); }
3.16
vector<string>v{10,"hi"}; for(auto &s:v){ cout<<s; } for(int i=0;i<v.size();i++) cout<<v[i];
3.17
string s; vector<string>v; while(cin>>s){ for(auto&c:s) c=toupper(c); v.push_back(s); } for(auto i:v) cout<<i<<endl; //toupper
3.18
不合法,不能直接用下标给对象赋值,可能会访问未被定义的值,造成严重后果,
改用push_back();//该用法会引发一个内在的隐藏函数,扩大容器内存。
3.19
vector<int>v(10,42); vector<int>v1 for(i=0;i<10;i++) v1.push_back(42);
3.20
vector<int>svec; int i; while(cin>>i){ svec.push_back(i); } for(int i;i<svec.size()-1;i++){ cout<<(svec[i]+svec[i+1])<<endl; }
vector<int>svec; int i; while(cin>>i){ svec.push_back(i); } for(int i;i<svec.size()-1;i++){ cout<<(svec[i]+svec[svec.size()-1-i])<<endl; }
原文:https://www.cnblogs.com/Zero-0/p/12764837.html