最近在看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 }