string和string.h以及cstring的区别
在C++中,#include<iostream>与#include<iostream.h>的区别,前者要使用更新的编译器(其实大部分编译器多比较前卫了,除了有些搞嵌入式的用变态的编译器),后者在有些VS版本中已经不再支持了
原来iostream是C++的头文件,iostream.h是C的头文件,即标准的C++头文件没有.h扩展名,将以前的C的头文件转化为C++的头文件后,有时加上c的前缀表示来自于c,例如cmath就是由math.h变来的。
百度百科的解释:
using namespace std //使用名字空间(使用所有)
using namespace std::cout//只使用cout
如不用using,则在代码前可以用sdt::cout<<表示使用的是std中的cout。
#include<iostream.h>//必须要加上.hvoid main()
{cout<<"Right?"<<endl;
}
#include<string>
#include<iostream>//此处必须去掉.h
usingnamespace std ;void main()
{string s;getline(cin,s);cout<<"Right?"<<endl;
}
相关解析:
iostream.h里面定义的所有类以及对象都是在全局空间里,所以你可以直接用cout
但在iostream里面,它所定义的东西都在名字空间std里面,所以你必须加上
using namespace std才能使用cout
一般一个C++的老的带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应,区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。
但唯独string特别。
问题在于C++要兼容C的标准库,而C的标准库里碰巧也已经有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数,比如楼主提到的strcmp。
这个头文件跟C++的string类半点关系也没有,所以<string>并非<string.h>的“升级版本”,他们是毫无关系的两个头文件。
要达到楼主的目的,比如同时:
#include <string.h>
#include <string>
usingnamespace std;
或者
#include <cstring>
#include <string>
其中<cstring>是与C标准库的<string.h>相对应,但裹有std名字空间的版本。
最大的挑战是把字符串头文件理清楚:
<string.h>是旧的C 头文件,对应的是基于char*的字符串处理函数;<string>是包装了std 的C++头文件,对应的是新的string 类(看下文);
<cstring>是对应于旧C 头文件的std 版本。(包含std)
<string>是c++ 的头文件,其内包含了一个string类,string s1就是建立一个string类的对象
<string.h> 的c语言的东西 并无类,所以不能 string s1
<cstring>文件实际上只是在一个命名空间std中include了 <string.h>
string和string.h以及cstring的区别相关推荐
- 头文件cstring、string、string.h的区别
头文件cstring.string.string.h的区别 <string>是C++标准库头文件,使用stirng类型必须首先包含string头文件,用于字符串操作,string类型可以进 ...
- string类 string.h头文件 cstring头文件区别以及读取一行字符串总结
以前一直分不清string类 string.h头文件 cstring头文件的去别,今天ce了一发才稍微弄懂了. 首先C语言中只有string.h头文件,string.h包含了一些字符数组和字符串的函 ...
- C\C++中头文件string与string.h的区别
http://www.cnblogs.com/Cmpl/archive/2012/01/01/2309710.html 在C++中,#include<iostream>与#include& ...
- 头文件string与string.h的区别
#include<iostream>与#include<iostream.h>的区别 在C++中,#include<iostream>与#include<io ...
- String、StringBuffer、与StringBuilder的区别
原文:http://www.cnblogs.com/sevenlin/p/sevenlin_StringBuffer_StringBuilder20150806.html String.StringB ...
- C#中的String和string有什么区别?还有ref关键字怎么用?
String 和 string 没有区别 string 是 String 的别名 ref 关键字一般只用于函数参数中,这个参数是 struct 类型,而不是 class 类型 因为 class 类型在 ...
- Java中的string定义的两种方法和区别
java中的String定义的两种方法和区别 第一种:new方式 String s1 = new String("hello world"); String s2 = new St ...
- NULL,,String.Empty三者在C#中的区别
(1)NULL null 关键字是表示不引用任何对象的空引用的文字值.null 是引用类型变量的默认值.那么也只有引用型的变量可以为NULL,如果int i=null,的话,是不可以的,因为Int是值 ...
- Java基础之String,StringBuilder,StringBuffer三者的区别
Java基础之String,StringBuilder,StringBuffer三者的区别 目录 运行速度方面 线程安全方面 小结 1. 运行速度方面 运行速度,在这方面运行速度快慢为:StringB ...
- String和string的区别
最近老看见有人在论坛上问String和string有什么区别,答案五花八门差点儿没让我背过气去,干脆放到Blog上来,论坛上就贴地址了: 首先,在一般情况下,String和string是一样的,但是他 ...
最新文章
- MongoDB主动撤回SSPL的开源许可申请
- xml文件导入mysql_如何使用XML_LOAD()将XML文件导入MySQL数据库表;功能?mysql-问答-阿里云开发者社区-阿里云...
- yyblog2.0 数据库开发规范
- 服务器间传文件$d,基于OpenSSH+WinSCP完成Windows服务器之间的文件传输
- 利用sql_trace跟踪一个指定会话的操作
- windows安装tensorflow GPU
- Java Queue 使用总结
- 开源API网关系统:Kong简介
- Flash Cs4安装之后打不开(启动界面一闪而过)
- 如何通过Matlab调用Aspen?
- 网页爬虫-八爪鱼Xpath自定义数字翻页
- 计算机发展史上一些重要的著作
- Tangle:不同于区块链的分布式账本
- Java 社区平台 - Sym 1.7.0 发布
- 网络电台mms地址大全(二)
- linux环境下java输出乱码,linux java 输出乱码问题
- fMRI与MRI区别+名词解释+MRI中T1和T2的含义与区分
- INSERT INTO SET
- 同步和异步的区别和优缺点
- centos7搭建代理服务器tinyproxy
热门文章
- Linux的运行级别/模式
- java mysql 博客园_JAVA基础--MySQL
- hql中获取前一天的数据_如何使用DNS和SQLi从数据库中获取数据样本
- micropython常用模块有那个_Python17个常用内置模块总结
- github issue 搜索_启用 GitHub Issue 作为博客留言系统 - Farseerfc的小窝
- 动态规划实战16 leetcode-198. House Robber
- CMU 15-213 Introduction to Computer Systems学习笔记(22) Synchronization: Advanced
- CMU 15-213 Introduction to Computer Systems学习笔记(2) Bits,Bytes,Integer
- java replaceall删除中括号和内容_replaceAll()如何同时替换多个不同的字符串(或多个符号)...
- php 126怎么设置发送邮箱验证码,邮箱发送验证码(示例代码)