C++11新特性(20)-用string对象处理文件名-文件名长度
C风格字符串
从C语言开始,就已经实现了对字符串的支持。为了处理C风格字符串,C语言标准库提供了一组函数,它们被定义在cstring.h头文件中:
strlen(p) 计算字符串长度
strcmp(p1, p2) 字符串比较
strcat(p1, p2) 字符串连接
strcpy(p1, p2) 字符串比较
从功能上来讲,C风格字符串完全可以满足开发的需求。但是严格地讲,C风格字符串并不是一种数据类型,而是以\n结尾的字符数组,所以会带来一些不便甚至危险:
1.保存字符串的内存空间需要程序员管理,容易出错。
2.几乎所有的处理都需要理解并正确运用\0结尾这件事。
如果你是一个老手,字符串处理可能是你的技能之一,但是如果你是一个新手,可能遇到的都是坑。
C++中的字符串
为了解决上面的问题,C++标准库提供了string类。使用string类,程序员首先(大部分场合)可以不必考虑字符串的内存分配问题,再就是可以使用更加直观地方式来操作字符串,例如:
使用=运算符实现字符串拷贝
使用+或+=运算符实现字符串连接
使用[]从字符串取得指定的字符
使用比较运算符进行字符串比较
当然string类的功能远不止这些,具体可以参考下面的链接.
http://www.cplusplus.com/reference/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的新功能中有好大一部分是为C++中程序员中的强迫症做的。
觉得本文有帮助?请分享给更多人。
关注【面向对象思考】,轻松学习每一天!
相关内容
-
金蝶kis标准版8.1破解版|1怎么安装?金蝶kis标准
金蝶kis标准版8.1破解版|1怎么安装?金蝶kis标准版v8.1怎么安...
-
标准差excel用什么函数?
标准差excel用什么函数?,函数,标准,什么,在数据单元格的下方输...
-
河北省课程设置|河北省课程设置标准及课时
河北省课程设置|河北省课程设置标准及课时,,1. 河北省课程设置...
-
金蝶标准版如何录入期初固定资产|金蝶kis标准版
金蝶标准版如何录入期初固定资产|金蝶kis标准版固定资产期初...
-
电脑密码长度|电脑密码长度不够
电脑密码长度|电脑密码长度不够,,电脑密码长度不够在添加待机...
-
远古VOD系统通过压力测试标准的网络视频点播项
远古VOD系统通过压力测试标准的网络视频点播项目,,近日,河北沧...
-
标准版金蝶1站点|kis标准版如何增加站点
标准版金蝶1站点|kis标准版如何增加站点,,1.kis标准版如何增加...
-
想查金蝶本总支出|金蝶标准版查管理费用明细账
想查金蝶本总支出|金蝶标准版查管理费用明细账怎么查,,1.金蝶...
-
电脑硬盘重复文件扫描|重复文件名扫描
电脑硬盘重复文件扫描|重复文件名扫描,,重复文件名扫描您在使...
-
无障碍电梯设置要求|无障碍电梯设置要求标准
无障碍电梯设置要求|无障碍电梯设置要求标准,,1. 无障碍电梯设...
-
电脑程序文件名乱码|电脑文件名称乱码
电脑程序文件名乱码|电脑文件名称乱码,,1. 电脑文件名称乱码1...
-
金蝶财务标准版使用教程|金蝶财务软件操作实用
金蝶财务标准版使用教程|金蝶财务软件操作实用教程是什么呢?...
-
金蝶库存明细帐怎么查|金蝶kis标准版如何查询上
金蝶库存明细帐怎么查|金蝶kis标准版如何查询上一年度的明细...
-
如何在wps中的放上编号|我想把图片批量插入到WO
如何在wps中的放上编号|我想把图片批量插入到WORD中,图片的...
-
金蝶录入凭证快速查找科目|金蝶标准版怎么查看
金蝶录入凭证快速查找科目|金蝶标准版怎么查看凭证类别怎么...