请教:关于命名空间与头文件

czlyc006 2005-07-31 11:36:13
小弟是C++菜鸟,今日在学习过程中碰到一个较菜的问题,请各位帮忙指点一下,谢谢!

下面是源码:

#include <iostream>
#include <string>
using namespace std;

int main()
{
string user;
cout<<"Please enter your name:";
cin>>user;
cout<<'\n'<<"Hello,"<<user<<"and goodbye!\n";
return 0;
}

问题是,我想,如果不在程序中引入string.h的话,当需要用 string class定义变量的时候就会出错
但当我将"#include <string>"这一句删去后,编译运行一切正常,而如果删掉"using namespace std;"一句后编译就会显示错误。查阅《C++ Primer》得知std为标准命名空间,但难道不需要引入相应的.h头文件就可以使用其中的成员吗?
...全文
211 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhbttfile 2005-07-31
  • 打赏
  • 举报
回复
所有STL标准库都不带扩展名,所以所有“.h”作为扩展文件名的都不是STL标准。带扩展名的文件可能是以前STL标准出来前的过渡产品(很可能是HP那一套)。所以,建议不要使用这些带扩展名的STL库文件,不具有可移植性。
所有STL的声明和定义都在std名字空间里。所以,使用时需要带上std名字空间。std名字空间的使用,可以参考一些C++参考书,里面有对名字空间的详细解释。
czlyc006 2005-07-31
  • 打赏
  • 举报
回复
....仔细回想,好像在安装 Dev-C++的时候有一个意思是“标准库文件缓存”的相关选项,难道是那里......?另外,还想请教一个问题:引入string.h后一定要用using namespace std使其内部成员可用吗?这样不就等于又有潜在地二义性问题了吗?
zzm7000 2005-07-31
  • 打赏
  • 举报
回复
我用vs。net 2003,没有问题,去掉#include <string>就有问题了,难道说Dev-C++ 里有什么设置默认的包含了<string>?
czlyc006 2005-07-31
  • 打赏
  • 举报
回复
补充一下,我采用的开发环境是 Dev-C++ V4.9.9.2
snowbirdfly 2005-07-31
  • 打赏
  • 举报
回复
#include <iostream>
#include <cstring>//??
using namespace std;

int main()
{
string user;
cout<<"Please enter your name:";
cin>>user;
cout<<'\n'<<"Hello,"<<user<<"and goodbye!\n";
return 0;
}
怎么会有错误?
ligang17596 2005-07-31
  • 打赏
  • 举报
回复
程序头部这样就行:
#include <iostream>
#include <cstring>//注意加c
using namespace std;

用dev c++ 在程序结尾最好有如下代码:
system("pause");
return 0;
便于察看结果!!
tudou614 2005-07-31
  • 打赏
  • 举报
回复
我在VC6下实验的,没有注意你使用的是dev-cpp,好像没有发现DEVCPP有什么地方能设置列表成员功能的地方
tudou614 2005-07-31
  • 打赏
  • 举报
回复
最简单的办法:

std::

出现的下拉列表中你会看到string是定义在这个namespace里面的
lw1a2 2005-07-31
  • 打赏
  • 举报
回复
既然你已经看了C++Primer,怎么还不明白?
P12下面
lyclowlevel 2005-07-31
  • 打赏
  • 举报
回复
如楼上所说的,标准c++是没有后缀名的。那些后缀名根据不同的编译器而不同。
#include<string.h>那么就不用using namespace std;,因为有了后缀以后,string
头文件中声明和定义的名字将被放在全局名字空间域中,那么这些名字在你的程序是
可见的。
但是,如果是#include<string>的话,那么在该头文件中声明和定义的对象名在
程序文本文件中是不可见的,必须通过using namespace std;来告诉编译器,程序中
用到的string在名字空间std中可以找到。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧