读书人

初学c++一些地方不理解希望大家帮

发布时间: 2012-03-01 10:25:47 作者: rapoo

初学c++,一些地方不理解,希望大家帮我解答一下。
最近在学习c++,看thinking in c++,看到第二章。书上的一些代码看不懂,请各位指教。

#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
int main()
{
vector <string> v;
ifstream in( "main.cpp ");
string line;
while(getline(in,line)){
v.push_back(line);
}

for(unsigned int i = 0; i < v.size(); i++){
cout < < v[i] < < endl;
}

return 0;
}

问题一:v是怎么出来的?
在java中,定义一个变量分配空间,要用 Vector v = new Vector(); 先生成一个对象然后赋给v。
难道在c++中不用赋值? 声明以下就能用了?

问题二: ifstream in( "main.cpp "); 是定义了一个ifstream类型的名叫in的变量吗?
在c++中用这样的语法定义变量: <type> <var_name> (xxx) ?
c++中好像也有用 <type> <var_name> = new <type> 来定义变量的方法。
这两种方法有什么区别呢?

问题三:我怎么才能知道getline是什么,endl是什么?,vector还有哪些函数?
我该去哪里找他们的文档?

[解决办法]
1,如果不是作为类的成员变量,声明一下就是调用默认构造函数
2. 是的,C++ 里的new多是跟指针联系在一起,int *i = new int(10);
3. 去下个库函数手册,或者如果装vs的话,直接用msdn也很方便
[解决办法]
问题1:在C++中,只要变量一定义,编译器就会给它分配空间。这里的应用与Java是不同的。
问题2:ifstream in( "main.cpp ");是定义一个ifstream类型的变量in。这里写成in( "main.cpp ");是由于ifstream为一种这样的重载的构造函数,这里的参数 "main.cpp "是一个文件名。这种 <type> <var_name> = new <type> 形式的表达式,我现在没有见到过, <type> * <var_name> = new <type> ---如比形式是定义一个指针,并为指针变量赋初值。
问题3:getline是读取一行字符串。endl是换行。vector是一个顺序存储的容器。这些在stl的相关文档中都有说明。有兴趣可以看看关于STL方面的书,这方面的书还是很多的。

读书人网 >C++

热点推荐