场景

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互相转换?

https://stackoverflow.com/questions/258050/how-to-convert-cstring-and-stdstring-stdwstring-to-each-other

Cpp读文件、CString转String、String转CString的更多相关文章

  1. python 写文件write(string), writelines(list) ,读文件

    read()方法用于直接读取字节到字符串中,可以接参数给定最多读取的字节数,如果没有给定,则文件读取到末尾. readline()方法读取打开文件的一行(读取下个行结束符之前的所有字节),然后整行,包 ...

  2. 头文件string.h,cstring与string

    string.h string.h是一个C标准头文件,所有的C标准头文件都形如name.h的形式,通过#include <string.h>可以导入此头文件.之后我们就可以在程序中使用st ...

  3. <string> 与<string.h>、<cstring>的区别

    <string.h> <string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <cstring> 在C++标准化(1998年 ...

  4. string string.h=cstring=str

    <string.h> <string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <cstring> 在C++标准化(1998年 ...

  5. C/C++ - <string> 与<string.h>、<cstring>的区别

    <string.h><string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <string><string>是C ...

  6. 【转】<string> <string.h> <cstring>的区别

    #include < string.h > void main() { string aaa = " abcsd d " ; printf( " lookin ...

  7. CString转char * ,string

    CString头文件#include <afx.h> string头文件#include <string.h> 1.CString转char * CString cstr; c ...

  8. string string.h cstring 区别

    c++中 string与string.h 的作用和区别 #include  <string.h>  void  main()  {        string  aaa=  "a ...

  9. C++中cstring.h和string.h的区别

    转载:https://blog.csdn.net/qian_chun_qiang/article/details/80648691 1.string与cstring有什么区别 <string&g ...

随机推荐

  1. LOJ #2540. 「PKUWC 2018」随机算法(概率dp)

    题意 LOJ #2540. 「PKUWC 2018」随机算法 题解 朴素的就是 \(O(n3^n)\) dp 写了一下有 \(50pts\) ... 大概就是每个点有三个状态 , 考虑了但不在独立集中 ...

  2. 自学Zabbix9.1 Network Discovery 网络发现原理

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix9.1 Network Discovery 网络发现原理 1. 网络发现简介 网络 ...

  3. 监控(2)-php-fpm进程监控 shell

    #!/bin/bash #监控的网页地址url="http://dev2.jwsmed.com" #fastcgi启动/重启/停止脚本路径PROG=/data/fistsoft/p ...

  4. 《CSS揭秘》笔记(一)

    前言 我们在现代 CSS 中所面临的挑战已经不在于如何绕过这些转瞬即逝的浏览器 bug.如今的挑战是,在保证 DRY ① .可维护.灵活性.轻量级并且尽可能符合标准的前提下,把我们手中的这些CSS特性 ...

  5. gb2312提交的url编码转换成utf8的查询

    使用场景,当一网站是gb2312的编码向另一个是utf8的网站提交查询 如:http://search.chinayq.com/?key=%C0%D6%C6%F7 其中key为gb2312的url编码 ...

  6. R语言 画图roc

    这才是我要的滑板鞋~~~~~ #glm模型glm.model=train(y~.,data=data_train, method="glm", metric="ROC&q ...

  7. mysql5.6下载及安装(超级详细)

    经过本人的实验,验证这些东西都是OK的 博客原文地址:http://www.cnblogs.com/Percy_Lee/p/5282187.html

  8. 【Maven】基础概念、仓库、构建与部属

    1.常见的自动化构建工具有: make.ant.maven.gradle,gradle是目前最新的,maven是目前最常用的. Eclipse是一种半自动化构建工具,主要体现在把:java文件-> ...

  9. property getitem setitem

    ..... >>> class Foo(object): def __init__(self,name): self._name = name @property def get_n ...

  10. springboot的注解详解

    配置类相关: @PropertySource(value = "classpath:test.properties")   //我们都把配置文件写到application.yml中 ...