关于C++中 命名空间域的问题? 请教高手!!!

来源:百度知道 编辑:UC知道 时间:2024/06/18 01:13:59
#include<sstream>
#include <iostream>
using namespace std;
void main()
{
ostringstream buffer;
buffer << "abc" <<endl;
buffer << "abc";
cout << buffer.str() << endl;
}

cout << buffer.str() << endl;中的 buffer.str() 是怎么回事?
是不是在声明using namespace std;中默认了什么东西啊?不然.只声明没定义的话,没什么用吧
如果是有默认的话.求using namespace std;中的原默认的详解.
问题补充:本人的C++才入门啊 而这个题目也是书上的,想了甚久.就是不明白,
还是求详解啊;

这是命名空间地问题,大哥好地比方把,一个大的程序,大家都在写程序,都用不同地变量和函数,但是有些变量和函数是重复地,不同地程序员可能用了相同的函数,怎么办呢?加一个标签把!!
这个标签就是namespace,不同地独立文件用地不同,在引用是加上namespace,就可以区别是谁定义地函数了,你说地std就是c++中地函数库文件地标签,在程序地前面加上这个,就是说以后地函数不说明地话就是用地库中地函数!!以后地学习中还是会用地到地,这些只是肤浅地解释,随着你地学习,就会有更加好地理解。希望你能明白,没有误解你阿!!

如果不考虑模板的话,str()是ostringstream类的一个成员函数:
string ostringstream::str( ) const;
可以去查MSDN;

std是个命名空间,样子差不多这样:
namespace std {
C++标准库的具体内容……
}
就当它是一层外壳好了:)

<sstream > 和<iostream>称为c++库。库里面包括了很多别人写好的函数。

关于using namespace std;为什么有这样的作用:
比如ostringstream ,这是个库里面现成的类。完整的全称是 std::ostringstream 。
所以你可以把程序改为以下形式对比理解:

#include<sstream>
#include <iostream>

void main()
{
std::ostringstream buffer;
buffer << "abc" <<std::endl;
buffer << "abc";
std::cout << buffer.str() << std::endl;
}

迷茫