VC++实现CStdioFile写入及读取文件并自动换行的方法
本文所述CStdioFile可实现在VC++中主要用来写入及读出文件的功能,继承自CFile类,它会自动处理 "\r\n",遇到"\n"自动添加\r并设置光标在当前行,它同时可以自动换行,不过使用CStdioFile在处理大文件时速度有些慢,
用CStdioFile写入读取文件实现代码如下:
LPTSTR filter=_T("Playlist Files(.txt)|*.txt|"); CString tempPath; CFileDialog saveFileDlg(FALSE,NULL,NULL,OFN_PATHMUSTEXIST,filter,NULL,0,TRUE); saveFileDlg.m_ofn.lpstrInitialDir=_T("E:\\media"); //设置默认目录 if(saveFileDlg.DoModal()==IDOK) { tempPath=saveFileDlg.GetPathName(); } CStdioFile listfile; tempPath+=_T(".txt");//定义读取txt文本文件 listfile.Open(tempPath,CFile::modeCreate|CFile::modeReadWrite|CFile::typeText); for (int i=0;i<m_ctrlPlayList.GetCount();i++) { CString temp; m_ctrlPlayList.GetText(i,temp); temp+="\n"; listfile.WriteString(temp); }
希望本文所述实例对大家进行VC++项目开发能够起到一定的借鉴与帮助作用。
相关推荐
-
C++ using namespace std 用法深入解析
一 :<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的. 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h. 因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就
-
理解C++编程中的std::function函数封装
先来看看下面这两行代码: std::function<void(EventKeyboard::KeyCode, Event*)> onKeyPressed; std::function<void(EventKeyboard::KeyCode, Event*)> onKeyReleased; 这两行代码是从Cocos2d-x中摘出来的,重点是这两行代码的定义啊.std::function这是什么东西?如果你对上述两行代码表示毫无压力,那就不妨再看看本文,就当温故而知新吧. std::
-
利用C++实现从std::string类型到bool型的转换
利用输入字符串流:std::istringstream 复制代码 代码如下: bool b;std::string s = "true";std::istringstream(s) >> std::boolalpha >> b; 但当字符串s为"1"时,上面的代码无法正确转换,此时应该用: 复制代码 代码如下: bool b;std::string s = "1";istringstream(s) >> b;
-
通过c++11改进我们的模式之改进命令模式
模式虽然精妙,却难完美,比如观察者模式中观察者生命周期的问题:比如访问者模式中循环依赖的问题等等:其它很多模式也存在这样那样的一些不足之处,如使用场景受限.实现复杂.不够简洁.不够通用等.但我觉得不足之处大都是可以采取一些手法去弥补去改进的,比如用c++11的新特性来改进.因此,便有了c++11改进我们的模式这个系列.这次我要讲的是如何使用c++11改进命令模式.关于命令模式 命令模式的作用是将请求封装为一个对象,将请求的发起者和执行者解耦,支持对请求排队以及撤销和重做.它的类图如下: 由于将请
-
使用c++11打造好用的variant方法
boost中的variant的基本用法: 复制代码 代码如下: typedef variant<int,char, double> vt;vt v = 1;v = '2';v = 12.32; 用variant一个好处是可以擦除类型,不同类型的值都统一成一个variant,虽然这个variant只能存放已定义的类型,但这在很多时候已经够用了. 取值的时候,通过get<T>(v)来获取真实值.然而,当T类型与v的类型不匹配时,会抛出一个bad_cast的异常来.boost的varia
-
c++11新增的便利算法实例分析
C++是一门应用非常广泛的程序设计语言,而c++11则新增加了一些便利的算法,这些新增的算法使我们的代码写起来更简洁方便,本文列举一些常用的新增算法,算是做个总结分析,更多的新增算法读者可以参考:http://en.cppreference.com/w/cpp/algorithm. 算法库新增了三个用于判断的算法all_of.any_of和none_of,定义如下: template< class InputIt, class UnaryPredicate > bool all_of( Inp
-
C++11中lambda、std::function和std:bind详解
前言 在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛.不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备.本文主要介绍了C++11中lambda.std::function和std:bind,下面来一起看看详细的介绍吧. lambda 表达式 C++11中新增了lambda 表达式这一语言特性.lambda表达式可以让我们快速和便捷的创建一个"函数". 下面是lambda表达式的语法: [ capture-list ] { body }
-
浅析C++11新特性的Lambda表达式
lambda简介 熟悉Python的程序员应该对lambda不陌生.简单来说,lambda就是一个匿名的可调用代码块.在C++11新标准中,lambda具有如下格式: [capture list] (parameter list) -> return type { function body } 可以看到,他有四个组成部分: 1.capture list: 捕获列表 2.parameter list: 参数列表 3.return type: 返回类型 4.function body: 执行代码
-
c++ std::invalid_argument应用
首先说明invalid_argument是一个类(class invalid_argument;),它的继承关系如下 exception-------->logic_error--------->invalid_argument invalid_argument原型是 复制代码 代码如下: class invalid_argument:public logic_error { public: explicit invalid_argument (const string& what_a
-
结合C++11新特性来学习C++中lambda表达式的用法
在 C++ 11 中,lambda 表达式(通常称为 "lambda")是一种在被调用的位置或作为参数传递给函数的位置定义匿名函数对象的简便方法. Lambda 通常用于封装传递给算法或异步方法的少量代码行. 本文定义了 lambda 是什么,将 lambda 与其他编程技术进行比较,描述其优点,并提供一个基本示例. Lambda 表达式的各部分 ISO C++ 标准展示了作为第三个参数传递给 std::sort() 函数的简单 lambda: #include <algorit
随机推荐
- 详解AngularJs中$sce与$sceDelegate上下文转义服务
- Oracle中创建和管理表详解
- 基础的prototype.js常用函数及其用法
- apache服务器全局配置详解(全)
- JavaEE开发之SpringMVC中的自定义消息转换器与文件上传
- IOS开发代码分享之用nstimer实现倒计时功能
- Asp.net下载功能的解决方案代码
- phpnow php探针环境检测代码
- Mysql 导入导出csv 中文乱码问题的解决方法
- JS简单实现无缝滚动效果实例
- 利用transition实现文字上下抖动的效果
- Python 操作文件的基本方法总结
- Android Tab 控件详解及实例
- jquery获得下拉框值的代码
- jquery插件tooltipv顶部淡入淡出效果使用示例
- JQuery.Ajax之错误调试帮助信息介绍
- C#页面之间跳转功能的小结
- Android Drawerlayout侧拉栏事件传递问题的解决方法
- 服务器断电导致虚拟机数据丢失的恢复方法详解
- 微信小程序数据存储与取值详解