Cpp读文件、CString转String、String转CString
场景
C++读取文件
技术点
读取文件
fstream提供了三个类,用来实现c++对文件的操作。(文件的创建、读、写)。
ifstream -- 从已有的文件读入
ofstream -- 向文件写内容
fstream - 打开文件供读写
文件打开模式:
ios::in 只读
ios::out 只写
ios::app 从文件末尾开始写,防止丢失文件中原来就有的内容
ios::binary 二进制模式
ios::nocreate 打开一个文件时,如果文件不存在,不创建文件
ios::noreplace 打开一个文件时,如果文件不存在,创建该文件
ios::trunc 打开一个文件,然后清空内容
ios::ate 打开一个文件时,将位置移动到文件尾
文件指针位置在c++中的用法:
ios::beg 文件头
ios::end 文件尾
ios::cur 当前位置
例子:
移动的是字节,不是行。
file.seekg(0,ios::beg); //让文件指针定位到文件开头
file.seekg(0,ios::end); //让文件指针定位到文件末尾
file.seekg(10,ios::cur); //让文件指针从当前位置向文件末方向移动10个字节
file.seekg(-10,ios::cur); //让文件指针从当前位置向文件开始方向移动10个字节
file.seekg(10,ios::beg); //让文件指针定位到离文件开头10个字节的位置
常用的错误判断方法:
good() 如果文件打开成功
bad() 打开文件时发生错误
eof() 到达文件尾
按行读取文件
const int bufsize = 512;
wchar_t strbuf[bufsize];
//
while (!file_.eof())
{
file_.getline(strbuf, bufsize);
}
String转CString
c_str()函数返回一个指向正规c字符串的指针,内容和string类的本身对象是一样的,通过string类的c_str()函数能够把string对象转换成c中的字符串的样式
CString strMfc;
std::string strStl=“test“;
strMfc=strStl.c_str();
CString转String
CString到std::string:
CString cs("Hello");
std::string s((LPCTSTR)cs);
由于std::string只能从LPSTR/ 构造LPCSTR,使用VC ++ 7.x或更高版本的程序员可以使用转换类,例如作为CT2CA中介。
CString cs ("Hello");
// Convert a TCHAR string to a LPCSTR
CT2CA pszConvertedAnsiString (cs);
// construct a std::string using the LPCSTR input
std::string strStd (pszConvertedAnsiString);
代码
按行读取文本文件
- 使用方式
vector<wstring> vecResult; // 文件读取的结果
wstring filename; // 文件路径
Cpp_read_file(vecResult, filename);
- MFC
#include <fstream>
#include <iostream>
int CMFCClistDlg::Cpp_read_file(vector<string> &result, string szFile)
{
//清空原始值
result.clear();
ifstream file_(szFile.c_str(), std::ios::in);
const int bufsize = 512;
char strbuf[bufsize];
// 读到文件末尾
while (!file_.eof())
{
file_.getline(strbuf, bufsize);
string sentence = strbuf;
if (sentence.empty())
{
continue;
}
result.push_back(sentence);
}
file_.close();
//如果结果值为空,返回-1
if(result.size()<1)
{
return -1;
}
return 0;
}
参考
C++读写TXT文件中的string或者int型数据以及string流的用法
https://www.cnblogs.com/1242118789lr/p/6885691.html
如何将CString和:: std :: string :: std :: wstring互相转换?
Cpp读文件、CString转String、String转CString的更多相关文章
- python 写文件write(string), writelines(list) ,读文件
read()方法用于直接读取字节到字符串中,可以接参数给定最多读取的字节数,如果没有给定,则文件读取到末尾. readline()方法读取打开文件的一行(读取下个行结束符之前的所有字节),然后整行,包 ...
- 头文件string.h,cstring与string
string.h string.h是一个C标准头文件,所有的C标准头文件都形如name.h的形式,通过#include <string.h>可以导入此头文件.之后我们就可以在程序中使用st ...
- <string> 与<string.h>、<cstring>的区别
<string.h> <string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <cstring> 在C++标准化(1998年 ...
- string string.h=cstring=str
<string.h> <string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <cstring> 在C++标准化(1998年 ...
- C/C++ - <string> 与<string.h>、<cstring>的区别
<string.h><string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <string><string>是C ...
- 【转】<string> <string.h> <cstring>的区别
#include < string.h > void main() { string aaa = " abcsd d " ; printf( " lookin ...
- CString转char * ,string
CString头文件#include <afx.h> string头文件#include <string.h> 1.CString转char * CString cstr; c ...
- string string.h cstring 区别
c++中 string与string.h 的作用和区别 #include <string.h> void main() { string aaa= "a ...
- C++中cstring.h和string.h的区别
转载:https://blog.csdn.net/qian_chun_qiang/article/details/80648691 1.string与cstring有什么区别 <string&g ...
随机推荐
- Java8 使用
Java8 使用 链接:https://www.jianshu.com/p/936d97ba0362 链接:https://www.jianshu.com/p/41de7b5ac7b9 本文主要总结了 ...
- [luogu4265][USACO18FEB]Snow Boots silver
题目大意 求出最少需要丢去多少双靴子才能到达终点. 解法 解法一: 看到数据的范围,非常清楚\(O(n^3)\)能过掉所有的数据,那么我们就果断暴力. 解法二: 比较容易会想到用DP做,我一开始定义\ ...
- AutoCompleteTextView和自定义的CursorAdapter
用雅虎天气接口和AutoCompleteTextView开发天气应用(1) 2014/03/20 | 分类: ANDROID, 开发 | 2 条评论 | 标签: 天气, 安卓开发 分享到:5 jQue ...
- shoi2017小结
某省选 胡雨菲让我做的,她自己已经AK了... 在loj(自由oj?)上面搜索shoi2017即可. 洛谷上也有,搜六省联考就行 第一题:大水题枚举 P3745 看题目就很水:(其实是因为胡雨菲给我讲 ...
- json模块和pickle模块(二十二)
之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型, json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用 ...
- 常用服务器构建 ftp
ftp服务器1.安装vsftpd服务器sudo apt-get install vsftpd2.配置vsftpd.conf文件sudo vi /etc/vsftpd.conf添加下面设置anonymo ...
- csp20140904最优配餐_Solution
Solution 经典bfs,所有的点到店的最短距离 其中一开始队列的长度为店的数目 一个点可能有多个订单 关于数据大小: 1.1000*(1000*1000)*2000=2,0000,0000,00 ...
- MATLAB:图形加法运算(imadd函数)
close all; %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clear all; clc; I=imread('rice.png'); %读入图像rice,赋值给I J=im ...
- 信号处理——EMD、VMD的一点小思考
作者:桂. 时间:2017-03-06 20:57:22 链接:http://www.cnblogs.com/xingshansi/p/6511916.html 前言 本文为Hilbert变换一篇的 ...
- vue-cli入门(二)——项目结构
前言 在上一篇项目搭建文章中,我们已经下载安装了node环境以及vue-cli,并且已经成功构建了一个vue-cli项目,那么接下来,我们来梳理一下vue-cli项目的结构. 总体框架 一个vue-c ...