文章目录

  • 3.2.2 string 对象上的操作
  • 3.2.3 处理string对象中的字符
  • 3.3.2 向vector对象中添加元素
  • 3.3.3其他vector操作

练习题涉及到代码的部分。

3.2.2 string 对象上的操作

3.2

//一次输入一整行
#include<string>
#include<iostream>
using namespace std;int main(){string line;cout<<"cin : ";while(getline(cin,line)){cout<<"cout : ";cout << line << endl;}return 0;
}
/*
cin : dskhfsdfj dflk dkf ewr
cout : dskhfsdfj dflk dkf ewr
*///一次输入一个词:
#include<string>
#include<iostream>
using namespace std;int main(){string word;cout<<"cin : ";while(cin >> word){cout<<"cout : ";cout << word << endl;}return 0;
}
/*
cin : a v a d ss dfdfk dsfls
cout : a
cout : v
cout : a
cout : d
cout : ss
cout : dfdfk
cout : dsfls
*/

3.3 string类的输入运算符和getline函数分别是如何处理空白字符串的?

  • 输入运算符:

在使用cin执行读取操作时,string对象会忽略开头空白,从第一个字符开始,到下一个空白结束。

  • getline函数:

如果说在最终字符串中保留输入时的空白,使用getline函数替代>>。

函数从给定的输入流中读取数据,直到遇到换行符为止(换行符也被读进来了),然后把所读的内容存放在string对象里(这里面不存在换行符)。

如果输入一开始就是个换行符,那么所得结果是一个空string。

3.4

//比较是否相等
#include<string>
#include<iostream>
using namespace std;int main(){string s1 , s2;int i = 0;while(getline(cin,s1) && getline(cin,s2)){if(s1 == s2)cout << "equal";else if(s1 > s2)cout<<s1;else cout<<s2;cout<<endl;cout<<endl;}return 0;
}
/*
aaasa
bbsd
bbsdasdlsf
asdlsf
equalavklfs
vs
vsklk
kl
klk*/
//比较是否等长#include<string>
#include<iostream>
using namespace std;int main(){string s1 , s2;int i = 0;while(getline(cin,s1) && getline(cin,s2)){if(s1.size() == s2.size())cout << "equal";else if(s1.size() > s2.size())cout<<s1;else cout<<s2;cout<<endl;cout<<endl;}return 0;
}
/*
sajdlsafldlsf
adsa
sajdlsafldlsfsakdkfjldsf
saddfkgorjgojoe
saddfkgorjgojoesd
sd
equal*/

3.5

#include<string>
#include<iostream>
using namespace std;int main(){string s1 , s2;while(cin >> s1){s2 =s2 + s1;}cout<<s2;return 0;
}
/*
dfjdslf
dfds
sdf
sdf
dsf
^Z
dfjdslfdfdssdfsdfdsf
*/#include<string>
#include<iostream>
using namespace std;int main(){string s1 , s2;int i = 0;while(cin >> s1){if(i==0){s2 = s2 + s1;i++;}elses2 = s2 + " " + s1;}cout<<s2;return 0;
}
/*
dfj
sad
ads
asd
adsf
bg
dsf
^Z
dfj sad ads asd adsf bg dsf
*/

3.2.3 处理string对象中的字符

3.6、3.7

#include<string>
#include<iostream>
using namespace std;int main(){string s(10,'c');for(auto &a : s)a = 'X';cout<<s<<endl;return 0;
}
/*
XXXXXXXXXX
*/
#include<string>
#include<iostream>
using namespace std;int main(){string s(10,'c');for(char &a : s)a = 'X';cout<<s<<endl;return 0;
}
/*
XXXXXXXXXX
*/

3.8

#include<string>
#include<iostream>
using namespace std;int main(){string s(10,'c');for(decltype(s.size()) i = 0; i != s.size(); ++i){s[i] = 'X';}cout<<s<<endl;return 0;
}
/*
XXXXXXXXXX
*/#include<string>
#include<iostream>
using namespace std;int main(){string s(10,'c');decltype(s.size()) index = 0; while(index != s.size()){s[index] = 'X'; ++index;}cout<<s<<endl;return 0;
}
/*
XXXXXXXXXX
*/

3.10

#include<string>
#include<iostream>
using namespace std;int main(){string s;getline(cin,s);decltype(s.size()) index = 0; for(auto c : s)if(ispunct(c))continue;elsecout<<c;return 0;
}
/*
i love you more_than i can say!! 521 ***()6&&&*^&%%&$%^#^%*(&789><::>::<
i love you morethan i can say 521 ()6789
*/

3.3.2 向vector对象中添加元素

3.14

#include<vector>
#include<iostream>
using namespace std;int main(){vector<int> a;int b;while(cin>>b){a.push_back(b);}return 0;
}

3.15

#include<vector>
#include<iostream>
#include<string>
using namespace std;int main(){vector<string> a;string b;while(cin>>b){a.push_back(b);}return 0;
}

3.3.3其他vector操作

3.16

#include<vector>
#include<iostream>
#include<string>
using namespace std;int main(){vector<int> v1;vector<int> v2(10);vector<int> v3(10,42);vector<int> v4{10};vector<int> v5{10,42};vector<vector<int>> v{v1,v2,v3,v4,v5};vector<string> v6{10};vector<string> v7{10 , "hi"};vector<vector<string>> vv{v6,v7};int k = 1;cout<<"v"<<k<<" : ";for(auto i : v){for(auto j : i){cout<<j<<" ";}cout<<endl;cout<<"v"<<++k<<" : ";}for(auto i : vv){for(auto j : i){cout<<j<<" ";}if(k+1==8) break;cout<<endl;cout<<"v"<<++k<<" : ";}return 0;
}
/*
v1 :
v2 : 0 0 0 0 0 0 0 0 0 0
v3 : 42 42 42 42 42 42 42 42 42 42
v4 : 10
v5 : 10 42
v6 :
v7 : hi hi hi hi hi hi hi hi hi hi
*/

3.17

#include<string>
#include<vector>
#include<iostream>
using namespace std;int main(){vector<string> v;string word;while(cin >> word){for(auto & c : word)c = toupper(c);v.push_back(word);}for(auto s : v)cout<<s<<endl; return 0;
}
/*
hudhfds
dsfhds
sdf
sdfi
we
wer
c
^Z
HUDHFDS
DSFHDS
SDF
SDFI
WE
WER
C
*/

3.20

#include<string>
#include<vector>
#include<iostream>
using namespace std;int main(){vector<int> v;int a;while(cin >> a){v.push_back(a);}decltype(v.size()) n = v.size();for(decltype(v.size()) i = 0; i <= n-1-i; ++i){if(i == n-1-i)cout<<v[i]<<endl;elsecout<<v[i]+v[n-1-i]<<endl;}return 0;
}
/*
1
2
3
4
5
^Z
6
6
3
*/
/*
1
2
3
4
^Z
5
5
*/

c++primer 3.2,3.3练习题相关推荐

  1. C++Primer 5th 第二章 部分练习题答案

    目前笔记写到第七章 需要可以私信我下面是习题答案 部分题目跳过 后面章节习题做不了 得跳回来做 2.1 在 C++语言中;long.long long和 short都属于整型,另外,是 C++ 标准规 ...

  2. 【C++Primer5】第一章的练习题及答案

    1.1 Review the documentation for your compiler and determine what file naming convention it uses. Co ...

  3. 关于c++中vector的push_back、拷贝构造copy constructor和移动构造move constructor

    问题来自C++ Primer的第十三章练习题的13.48.是这样说的: 定义一个vector<String>并在其上多次调用push_back运行你的程序,并观察String被拷贝了多少次 ...

  4. C++ Primer Plus 学习记录(第五章节-包含练习题答案)

    C++ Primer Plus 学习记录(第五章节-包含练习题答案) 5.1 for循环 5.1.1 for循环的组成部分 1.for循环的组成部分所完成的步骤 2.赋值表达式有值 3.cout中显示 ...

  5. C++ primer (中文版-第五版 )练习题答案

    C++ primer (中文版-第五版 ) 练习题答案 第1章 开始 1.4控制流 1.4.1节 while语句练习 1.4.2节 for语句练习 1.4.3节 读取数量不定的输入数据练习 1.4.4 ...

  6. C++primer 第五版 练习题【3.32】 P104页 个人解答

    [练习题3.32] 题目大致意思如下: 定义一个含有10个int的数组,令每个元素的值就是其下标值,将创建的数组拷贝给另外一个数组.利用vector重写程序,实现类似的功能: [源代码]: #incl ...

  7. C++ primer 第五版 练习题记录

    这里是第六章的练习题记录. 6.1节练习 练习6.1 实参是形参的初始值.第一个实参初始化第一个形参,第二个实参初始化第二个形参,以此类推.尽管实参与形参存在对应关系,但是并没有规定实参的求值顺序,编 ...

  8. C primer plus 练习题 第三章

    5. 1 #include <stdio.h> 2 3 int main() 4 { 5 float you_sec; 6 printf("请输入你的年龄:"); 7 ...

  9. C++ Primer练习题day1

    /* 练习1.1略 练习1.2.改写程序,让他返回-1. 练习1.3.编写程序,在标准的输出上打印Hello,World. */ #include<iostream> int main() ...

最新文章

  1. CentOS7下配置bacula-web
  2. SAP S/4HANA Layer Repository(LREP)的读取逻辑调试
  3. matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21
  4. 在windows下的cmd中如何进入与退出mysql
  5. 作者:许洪波,男,博士,中国科学院计算技术研究所副研究员、硕士生导师。...
  6. 下一代 Node 强势来袭:Deno
  7. abb机器人goto指令用法_ABB机器人指令对照---中文
  8. mac 2k显示器字体发虚_精准色彩体验-优派VP2785-2K
  9. smtplib,发送邮件时的bug
  10. Redis 锁的实现方案
  11. 【读书笔记《Bootstrap 实战》】6.单页营销网站
  12. SSM项目实战之博客系统
  13. LaTeX 数学公式及符号
  14. arm-linux内存页表创建
  15. 灭了珊瑚虫,OOXX了SOFF,下一个是谁?
  16. ABP开发框架的总体介绍
  17. sourceinsight 查看源码的利器
  18. 【从零开始学AR】:开发工具选择与Unity安装(准备工作)
  19. 【09年的MACBOK PRO 安装双系统极简教程】
  20. C++ 获取系统当前时间

热门文章

  1. 【C++】For循环同时初始化两个变量
  2. Lambda表达式及应用
  3. 操作系统的SPOOLING技术
  4. java非检查性异常有哪些_Java异常处理-检查性异常、非检查性异常、Error
  5. word2vec python 代码实现_python gensim使用word2vec词向量处理中文语料的方法
  6. java 小数处理_java 小数点处理
  7. 国防科技大学计算机学院教员,我国最好的四所科技大学,第一名排名世界前列,还有一所是铁饭碗...
  8. 中南大学12月13日考c语言,中南大学2010级C语言试卷
  9. 战双帕弥什自抽号怎么使用_战双帕弥什新S冰露怎么玩《战双帕弥什》新S冰露玩法技巧...
  10. php active控件,php – 使用TbActiveForm选择列表中的动态选项