Thinking in C++ 课后习题自己实现 第二章

  最近在看Thinking in C++,今天下午自己实现了第二章的课后习题。虽然看起来是一件微不足道的小事情,但是对于我来说,这是成长路上的一点点小积淀。我的梦想是有一天可以在程序的世界里自由驰骋,做出一些属于自己的东西。现在只是刚刚起步,还需要坚持不懈的努力。把自己实现的代码贴出来留作纪念。这些代码在vs2015上编译通过。

 1 /*
 2 Thinking in C++ 2-3
 3     本程序的目的是统计打开文件中以空格隔开的单词个数,这里直接使用了>> 操作符一次取出一个单词
 4 直到文件结束这样就直接计算出来文件中单词的个数
 5 */
 6 
 7 #include<iostream>
 8 #include<fstream>
 9 #include<vector>
10 #include<string>
11 
12 using namespace std;
13 
14 int main()
15 {
16     int WordNumber = 0;
17     ifstream in("Test.txt");//打开Test.txt文件
18     if (!in)
19     {
20         cout << "Open file error!" << endl;
21     }
22 
23     string words;
24 
25     while (in >> words)//in >> words 一次取出一个单词直到文件结束
26     {
27         WordNumber++;
28     }
29     cout << "单词数为" << WordNumber << endl;
30     return 0;
31 }
 1 /*
 2     Thinking in C++ 2-4
 3     本程序通过 >> 操作符每次取出一个单词与所要查找的单词去匹配,
 4 找到相同的单词计数器加一,统计所要查找的单词的个数
 5 */
 6 
 7 
 8 #include<iostream>
 9 #include<fstream>
10 #include<string>
11 
12 using namespace std;
13 
14 int main()
15 {
16     int SpecificWordNumber = 0;
17     ifstream in("Test.txt");
18     if (!in)
19     {
20         cout << "Open file Error!" << endl;
21     }
22 
23     string SomeWord;
24     string SpecificWord;
25     cout << "请输入要查找的单词 :" << endl;
26     cin >> SpecificWord;
27 
28     while (in >> SomeWord)
29     {
30         if (SpecificWord == SomeWord)
31         {
32             SpecificWordNumber++;
33         }
34     }
35 
36     cout << "SpecificWordNumber = " << SpecificWordNumber << endl;
37 
38     return 0;
39 }
  1 /*
  2 Thinking in C++ 2-5
  3     本程序通过逐行读取文件中的内容,然后将文件中的内容进行正序,和反序打印出来,
  4 这里用到了vector的size()函数。
  5 */
  6 #include<iostream>
  7 #include<fstream>
  8 #include<vector>
  9 #include<string>
 10 
 11 using namespace std;
 12 
 13 int main()
 14 {
 15     vector<string> v;
 16     ifstream in("Test.txt");
 17 
 18     string line;
 19     while (getline(in, line))
 20     {
 21         v.push_back(line);
 22     }
 23     cout << "正序打印:" << endl;
 24     for (int i = 0; i < v.size(); i++)
 25     {
 26         cout << i << ": " << v[i] << endl;
 27     }
 28     cout << "反序打印:" << endl;
 29     for (int i = v.size() -1; i >= 0; i--)
 30     {
 31         cout << i << ": " << v[i] << endl;
 32     }
 33     return 0;
 34 }
 35 
 36 
 37 /*
 38     Tinking in C++ 2-6
 39     本程序是将文件中每行数据连接起来变成一行,也就是一个字符串,用string 的 + 
 40 就可以轻松实现
 41 */
 42 
 43 #include<iostream>
 44 #include<string>
 45 #include<fstream>
 46 #include<vector>
 47 
 48 using namespace std;
 49 
 50 int main()
 51 {
 52     vector<string> v;
 53 
 54     ifstream in("Test.txt");
 55     if (!in)
 56     {
 57         cout << "File open Error!" << endl;
 58     }
 59     string line;
 60     while (getline(in, line))
 61     {
 62         v.push_back(line);
 63     }
 64 
 65     string str;
 66 
 67     for (int i = 0; i < v.size(); i++)
 68     {
 69         str += v[i];
 70     }
 71     cout << "连接成单独的字符串的内容是: " << endl;
 72     cout << str << endl;
 73     return 0;
 74 }
 75 
 76 
 77 
 78 
 79 /*
 80     Thinking in C++ 2-7
 81     本程序功能一次显示一行数据,直到用户再次输入回车显示下一行数据
 82 */
 83 
 84 #include<iostream>
 85 #include<fstream>
 86 #include<vector>
 87 #include<string>
 88 
 89 using namespace std;
 90 
 91 int main()
 92 {
 93     vector<string> v;
 94     ifstream in("Test.txt");
 95     if (!in)
 96     {
 97         cout << "Open file Error!" << endl;
 98     }
 99 
100     string line;
101 
102     while(getline(in, line))
103     {
104         v.push_back(line);
105     }
106     int i = v.size() - 1;
107     int j = 0;
108     char GetChar;
109     cout << v[j];
110     while (i)
111     {
112         cout << "请输入回车显示下一行数据:";
113         GetChar = getchar();
114         if (GetChar == 10)
115         {
116             cout << v[++j] << endl;
117         }
118         i--;
119     }
120     return 0;
121 }

 

转载于:https://www.cnblogs.com/zkhm123/p/5730465.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值