C++11怎么用string对象处理文件名

发布时间:2021-11-25 16:30:36 作者:iii
来源:亿速云 阅读:234

这篇文章主要介绍“C++11怎么用string对象处理文件名”,在日常操作中,相信很多人在C++11怎么用string对象处理文件名问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++11怎么用string对象处理文件名”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

C风格字符串

从C语言开始,就已经实现了对字符串的支持。为了处理C风格字符串,C语言标准库提供了一组函数,它们被定义在cstring.h头文件中:

strlen(p)     计算字符串长度

strcmp(p1, p2)  字符串比较

strcat(p1, p2)     字符串连接

strcpy(p1, p2)    字符串比较

从功能上来讲,C风格字符串完全可以满足开发的需求。但是因为C风格字符串实际上是以\0结尾的字符数组。这虽然从结果上导致字符串处理成为C语言编程的技能之一,但是不能否认,这种难度也会产生不便甚至是危险:

1.保存字符串的内存空间需要程序员管理,容易出错。

2.几乎所有的处理都需要理解并正确运用\0结尾这件事。

C++中的字符串

为了解决上面的问题,C++标准库提供了string类。使用string类,程序员首先(大部分场合)可以不必考虑字符串的内存分配问题,再就是可以使用更加直观地方式来操作字符串,例如:

使用=运算符实现字符串拷贝

使用+或+=运算符实现字符串连接

使用[]从字符串取得指定的字符

使用比较运算符进行字符串比较

C++标准库中的文件名

回到今天的主题,C++标准库中,定义了3个类来支持文件读写:

ifstream:支持从文件读取数据

ofstream:支持向文件写入数据

fstream:支持读写数据。

不知为什么,C++一方面提倡避免使用C风格字符串,一方面在自己的标准库中表达文件名时继续使用C风格字符串而不是string类。例如ifstream::open方法:

void open(const char* filename,
   ios_base::openmode mode = ios_base::in);

这种情况在C++11时发生了改变,除了支持上述方式之外,同时也可以使用下面的方法:

void open (const string& filename,  
   ios_base::openmode mode = ios_base::in);

打开文件方法中文件名参数增加了对string类的支持。虽然这里只是举了ifstream::open的例子,这种变化也同样适用于其他几个文件操作类。

到此,关于“C++11怎么用string对象处理文件名”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. Java中的String对象
  2. 怎么在java中使用string对象

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

string c++

上一篇:C++为什么不要在条件语句中增加多余的==或!=

下一篇:C++中的in-out指什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》