C++中string和string.h的作用和区别

#include < string .h >

void main()
{
string aaa = " abcsd d " ;
printf( " looking for abc from abcdecd %s\n " ,
(strcmp(aaa, " abc " )) ? " Found " : " Not Found " );

}

不能正确执行,提示说是string 类型没有定义

而下面:

#include < string >

using namespace std;
void main()
{
string aaa = " abcsd d " ;
printf( " looking for abc from abcdecd %s\n " ,
(strcmp(aaa, " abc " )) ? " Found " : " Not Found " );
}

这里的string编译器就认识了,但是strcmp就不认识了呢?

一般一个C++的老的带“。h”扩展名的库文件,比如 iostream.h,在新标准后的标准库中都有一个不带“。h”扩展名的 相对应,区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了 “std”名字空间中。

但唯独string特别。

问题在于 C++要兼容C的标准库,而C的标准库里碰巧也已经有一个名字叫做 “string.h”的头文件,包含一些常用的C字符串处理函数,比如楼 主提到的strcmp.

这个头文件跟C++的string类半点关系也没有,所以 <string>并非<string.h>的“升级版本”,他们是毫无 关系的两个头文件。

要达到楼主的目的,比如同时:

#include < string .h >
#include < string >
using namespace std;

或者

#include < cstring >
#include < string >

其中<cstring>是与C标准库 的<string.h>相对应,但裹有std名字空间的版本。

时间: 2024-09-13 16:56:14

C++中string和string.h的作用和区别的相关文章

javascript中apply和call方法的作用及区别说明_javascript技巧

一.call和apply的说明 1.call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了,这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同. 2.语法:foo.call(this, arg1,arg2,arg3) == foo.apply(this,

c++ string与string.h的区别

c++ string与string.h的区别 在C++中,#include<iostream>与#include<iostream.h>的区别,前者要使用更新的编译器(其实大部分编译器多比较前卫了,出了有些搞嵌入式的用变态的编译器).<string>是c++ 的头文件,其内包含了一个string类,string s1就是建立一个string类的对象 <string.h> 的c语言的东西 并无类,所以不能 string s1 <cstring>文件

详解C++中实现继承string类的MyString类的步骤_C 语言

昨天师兄又出了道测试题,让我们实现类似于string类的没有MyString类,刚开始很头疼,可是真正在自己写代码的时候又很兴奋的发现,这个过程真的是个很宝贵的机会,让我又有机会可以很好的熟悉回顾C++的很多知识-类设计,构造析构函数,成员函数,友元函数,引用,重载,字符串操作,动态内存分布.....于是昨天花了半天时间写了300多行代码,并认真的进行了相关测试.修改和总结.因为内容有点丰富,所以想分几次写出来,条理也清楚些. 类的空间分配:类给它的每个对象都分配了独立的空间去存储它的数据成员,

C++中简单的string类的实现详解

String 在C++的学习生涯我中发现String类的功能十分强大,所以我们是很有必要模拟实现它的,况且在面试的时候模拟实现一个String类也是面试官经常会考的,但是因为外界因素的限制我们是不可能模拟的和库里的string一致的(C++库里的string功能更强大),所以今天我们只模拟实现string的基本功能-构造函数,拷贝构造函数,析构函数,赋值运算符重载,运算符+=的重载,运算符[]的重载,c_str(得到一个C风格的字符指针,可操作字符串),Size,Push_Back,Insert

C#中,String和string的区别

区别 C#中,字符串的声明,你使用String还是string?String? string? 只有一个大小写的问题,你习惯用哪个?知道具体的区别吗?我是习惯了用string,区别也是最近才找到了权威的根据,'CLR via C#'.其实,String是CLR的类型名称(也算是keyword),而string是C#中的keyword.在C#的编译时,默认会增加几行代码,看了你就会明白string和String的区别了!using string = System.String; using sby

C#、.Net中把字符串(String)格式转换为DateTime类型的三种方法

  这篇文章主要介绍了C#..Net中把字符串(String)格式转换为DateTime类型的三种方法,本文总结了Convert.ToDateTime(string).Convert.ToDateTime(string, IFormatProvider).DateTime.ParseExact()三种方法,需要的朋友可以参考下 方式一:Convert.ToDateTime(string) 代码如下: Convert.ToDateTime(string) 注意:string格式有要求,必须是yyy

java 中 String.indexOf(string) 就是找不到,明明存在在文件中 。求助?

问题描述 java 中 String.indexOf(string) 就是找不到,明明存在在文件中 .求助? 我从网站或文件中读取一个文档,存储在一个String str中:比如此时我要查找一个 子字符串 substr 用 indexOf方法返回的为-1 但是在str中确实存在substr 在记事本或网页中可以查找到.把str 输出到console中也是存在 substr的求帮忙分析下原因?解决方法?谢谢 解决方案 大小写.全角半角.隐藏的空格或者特殊字符等细节检查下,还有,访问的是不是你期待的

[译] 探索 Swift 4 中新的 String API

本文讲的是[译] 探索 Swift 4 中新的 String API, WWDC 已经结束了(我觉得是自 2014 年来最好的一场 WWDC),同时 Xcode 9 beta 版也发布了,很多开发者已经开始把玩 Swift 4 ,今年的新版本真心不错,这是一个改进版本而不是重构版本(像 Swift 2 和 3),因此大多数代码升级起来会更容易. 其中一个改进是 String 的 API,在 Swift 4 中更易用,也更强大.在过去的 Swift 版本中,String API 经常被提出为一个例

获取url中的query string

获取url中的query string util方法: Java代码   /***       * convert request query string to map       *        * @param queryString       * @return       */       public static Map<String, Object> parseQueryString(String queryString) {           if (ValueWidg