【发布时间】:2015-11-01 02:22:32
【问题描述】:
我在 Thinking In C++, 2nd Edition, Volume 1 ©2000 by Bruce Eckel 一书中第 2 章中的练习 6。
原来的问题:
更改 Fillvector.cpp,使其在打印输出之前将向量中的所有元素连接成一个字符串,但不要尝试添加行号。
文件 Fillvector.cpp 位于http://www.BruceEckel.com。
以下代码是我为解决练习而编写的:
// Fillvector.cpp
#include <string>
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<string> v;
ifstream in("Fillvector.cpp");
string line, ss;
while (getline(in, line)) {
v.push_back(line);
}
for (vector<string>::size_type i = 0; i < v.size(); i++) {
ss += v[i];
}
cout << ss;
return 0;
}
代码编译成功,我得到了生成的结果:
} 返回 0;s;[i];ing>::size_type i = 0; i
输出不是我想的那样。我认为输出必须如下:
// Fillvector.cpp#include <string>#include <fstream>#include <iostream>#include <vector>using namespace std:int main() {vector<string> v;ifstream in("Fillvector.cpp");string line, ss;while(getline(in, line))v.push_back(line);for(string::size_type i = 0; i < v.size(); i++)ss += v[i];cout << ss;return 0;}
我在http://www.cplusplus.com/reference/string/string/operator+=/ 阅读了有关字符串连接运算符的信息,但仍然不知道为什么输出错误。请为我解释这个输出。任何帮助将不胜感激。
【问题讨论】:
-
Fillvector.cpp 包含什么?
-
Fillvector.cpp 包含上面的源代码。