导航
全部
博文收录
Ada助手
问答
...
博文收录
Ada助手
问答
登录/注册
社区
C++ 语言
帖子详情
为什么不包含string头文件,也可以使用string类型?
xiaoxuhao
2005-12-13 12:00:09
今天发现在Dev-cpp中,不用#include <string>,也可以使用string类型!
在vc6.0和vc2003.net中,
string类型也可以使用,
不过若不#include <string>,
string的一些运算符操作不可用。
是Dev-cpp编译环境隐式包含了string?
是iostream间接引用了string?
请指教。谢谢!
...全文
给本帖投票
1483
11
打赏
收藏
为什么不包含string头文件,也可以使用string类型?
今天发现在Dev-cpp中,不用#include ,也可以使用string类型! 在vc6.0和vc2003.net中, string类型也可以使用, 不过若不#include , string的一些运算符操作不可用。 是Dev-cpp编译环境隐式包含了string? 是iostream间接引用了string? 请指教。谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
cannot initialize the debugging subsystem
>>
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
发表回复
按下Enter换行,Ctrl+Enter发表内容
编辑
预览
轻敲空格完成输入
显示为
卡片
标题
链接
打赏红包
ericqxg007
2005-12-13
打赏
举报
回复
mark &up
sankt
2005-12-13
打赏
举报
回复
up
sinall
2005-12-13
打赏
举报
回复
《Effective STL》
条款48:总是#include适当的头文件
STL编程的次要麻烦之一是虽然可以很容易地建立可以在一个平台上编译的软件,但在其它平台上则需要附加的#include指示。这个烦恼来自一个事实:C++标准(不像C标准)未能指定哪一个标准头文件必须或者可能被其他标准头文件#include。由于有了这样的灵活性,不同的实现就会选择去做不同的东西。
这在实践中意味着什么?我可以给你一些的概念。我使用了五个STL平台(咱们叫它们A、B、C、D和E),花了一些时间在它们上测试了一些小程序来看看我可以在忽略哪个标准头文件的情况下仍然成功编译。这间接地告诉我哪个头文件#include了其他的。这是我所发现的:
* 对于A和C,<vector> #includes <string>.
* 对于C,<algorithm> #includes <string>.
* 对于C和D, <iostream> #includes <iterator>.
* 对于D, <iostream> #includes <string> and <vector>.
* 对于D和E, <string> #includes <algorithm>.
* 对于所有的五个实现,<set> #includes <functional>.
除了<set> #include <functional>外,我无法使缺少头文件的程序通过实现B。按照Murphy定律,你总是会在像A、C、D或E那样的平台上开发,然后移植到像B那样的平台,尤其是当移植的压力很大而且完成的时间很紧的情况下。
但是请别指责你将要移植的编译器或库实现。如果你缺少了需要的头文件,这就是你的过错。无论何时你引用了std名字空间里的元素,你就应该对 #include合适的头文件负责。如果你遗漏了它们,你的代码也可能编译,但你仍然缺少了必要的头文件,而其他STL平台可能正好会抵制你的代码。
要帮你记起需要的东西,关于在每个标准STL相关的头文件中都有什么,这里有一个快速概要:
* 几乎所有的容器都在同名的头文件里,比如,vector在<vector>中声明,list在< list>中声明等。例外的是<set>和<map>。<set>声明了set和multiset,< map>声明了map和multimap。
* 除了四个算法外,所有的算法都在<algorithm>中声明。例外的是accumulate(参见条款37)、inner_product、adjacent_difference和partial_sum。这些算法在<numeric>中声明。
* 特殊的迭代器,包括istream_iterators和istreambuf_iterators(参见条款29),在<iterator>中声明。
* 标准仿函数(比如less<T>)和仿函数适配器(比如not1、bind2nd)在<functional>中声明。
无论何时你使用了一个头文件中的任意组件,就要确定提供了相应的#include指示,就算你的开发平台允许你不用它也能通过编译。当你发现移植到一个不同的平台时这么做可以减少压力,你的勤奋将因而得到回报。
chen_fu
2005-12-13
打赏
举报
回复
可以试着用goto之类的找找使用的是哪个定义看看
yuanchuang
2005-12-13
打赏
举报
回复
我全说错了。
yuanchuang
2005-12-13
打赏
举报
回复
但是你不用#include <iostream>而只用#include <cstring>,他还是在string处汇报错,想不通
yuanchuang
2005-12-13
打赏
举报
回复
很有可能#include <iostream>里饱含了cstring
bohemia
2005-12-13
打赏
举报
回复
在C++标准规范中.<string> 是string类型声明的地方.<cstring>是一些字符串函数声明的地方.比如strcpy,.etc.不知道默认情况下.DEVC会不会自动寻找一些标准的类型头文件.
cpunion
2005-12-13
打赏
举报
回复
以前也有同事遇到一样的问题,好的习惯是使用时包含string头。iostream间接引用了string,在VC下的确会出现操作符不能使用的情况,我觉得这个做法是正确的,g++使用的STL实现可以在只包含iostream头时照样使用那些操作符。
yuanchuang
2005-12-13
打赏
举报
回复
string里放的是string函数
cstring里放的才是string类型
dragonzxh
2005-12-13
打赏
举报
回复
8#include<string>我反正用不了string类型
C语言
头文件
STRING
.H
C语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言
头文件
STRING
.HC语言头文
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
STRING
C语言
头文件
为什么C++中不引用
string
头文件
还可以用
string
< iostream >需要用到std::ios_base
类型
,std::ios_base有个成员函数的返回
类型
是std::locale,std::locale定义在< locale >
头文件
,< locale >中还有一个叫做std::numpunct的类模板,std::numpunct有一个成员函数的返回
类型
是std::
string
,所以是< iostream >悄咪咪
包含
了
string
头文件
,并不是
string
不用导包。 原答案:https://www.
string
类型
需要
头文件
?
1、
string
类型
的变量是什么? 2、常用的
string
类型
的
头文件
有哪些? 3、为什么
string
类型
不需要
头文件
? 4、实例图片
C++中
string
为什么不引用
string
头文件
还可以用
因为我们通常
使用
的 < iostream >
头文件
中
包含
了 <
string
>
头文件
。
C++ 语言
65,132
社区成员
250,545
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
积分榜
荣誉榜
原力榜
学习榜
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章
手机看
关注公众号
客服
返回
顶部