我们就不知道需要多少string--只有读完整个文件后才知道,我们需要某种能够自动扩展
的存放,用以包含所需数量的string对象。
有某种容器对象,能容纳所有的各种对象。
vector类是一个模板,可以有效地用于不同的类型。
用模板可以创建任何事物的类。
vector末尾增加一个新元素,用push_back()。
Insert(),在容器中间加入新元素。
通过下标寻找数组的元素,vector可以像数组那样。
<< >> 用于iostream,操作符重载用于vector
//: C02:Fillvector.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Copy an entire file into a vector of string
#include <string>
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main() {
vector<string> v;
ifstream in("Fillvector.cpp");
string line;
while(getline(in, line))
v.push_back(line); // Add the line to the end
// Add line numbers:
for(int i = 0; i < v.size(); i++)
cout << i << ": " << v[i] << endl;
getchar();
} ///:~
大部分与前一个程序相同,打开文件并每次将一行读进string对象。 不同的是,这些string
对象被对象压入vector v的尾部。 while循环完成是,整个文件在v内,并驻留内存
while语句之后是for循环语句,与while类似,不过多了一些控制条件。for之后的括号内是
控制表达式,这和while语句相同。
输出
0: //: C02:Fillvector.cpp
1: // From Thinking in C++, 2nd Edition
2: // Available at http://www.BruceEckel.com
3: // (c) Bruce Eckel 2000
4: // Copyright notice in Copyright.txt
5: // Copy an entire file into a vector of string
6: #include <string>
7: #include <iostream>
8: #include <fstream>
9: #include <vector>
10: using namespace std;
11:
12: int main() {
13: vector<string> v;
14: ifstream in("Fillvector.cpp");
15: string line;
16: while(getline(in, line))
17: v.push_back(line); // Add the line to the end
18: // Add line numbers:
19: for(int i = 0; i < v.size(); i++)
20: cout << i << ": " << v[i] << endl;
21: } ///:~