C++自定义类中使用string变量问题

今天,写了一个自定义类,与C中的结构体类似。

struct 类名{类体}; 自定义类的后面必须加;否则会报错。

在自定义类中,定义了一个string类型的变量。如下所示:

struct Sale_data

{

string ISBN;//书号

unsigned  units_sold;//销售数量

double revenue;//总价格

};

        将此结构放在一个头文件中,并在main函数中去调用,结果在调用的过程中,此结构不识别string类型的ISBN,而其他的两个变量都会识别到。编译之后出现的错误为:C++自定义类中使用string变量问题 - 雨竹清风 - 雨竹清风的博客

        经过排查错误,一个是Sale_data所在的头文件中所包含的头文件不对,string类型的变量应该包含的是<string>头文件,而不是<string.h>头文件。第二个是string类型是包含在std命名空间中的,所以还必须加上using namespace std;命名空间。

---------------以下转自http://www.cnblogs.com/frustrate2/archive/2012/12/03/2799341.html----------------- 

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

但唯独string特别。
         问题在于C++要兼容C的标准库,而C的标准库里碰巧也已经有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数,比如strcmp。
       这个头文件跟C++的string类半点关系也没有,所以<string>并非<string.h>的“升级版本”,他们是毫无关系的两个头文件。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值