C++读写txt

1、File*

(1) 写入txt

void WriteTXT()
{
    std::string filepath;
    FILE* file = fopen(filepath.c_str(), "wt+");
    if (file) 
    {
        std::string str = "test";
        std::stringstream ss;
        ss << "write txt  " << str;
        fputs(ss.str().c_str(), file);
        fclose(file);
    }
}

(2) 按行读取txt

void ReadTXT()
{
    std::string filePath;
    FILE* file = fopen(filePath.c_str(), "r");
    if (file)
    {
        char buff[1000];
        while(fgets(buff, 1000 ,file) != NULL)
        {
            char *pstr = strtok(buff, "\n");
            if (pstr)
            {
                std::string str = pstr;
            }
        }
        fclose(file);
    }
}

 2、ifstream、ofstream

(1) 文件打开方式

ios::in 读文件打开
ios::out 写文件打开
ios::ate 从文件尾打开
ios::app 追加方式打开
ios::binary 二进制方式打开
ios::trunc 打开一个文件时,清空其内容
ios::nocrate 打开一个文件时,如果文件不存在,不创建
 ios::noreplace  打开一个文件时,如果文件不存在,创建该文件 

(2) 写入txt

#include <fstream>
void WriteTXT()
{
    ofstream ofs;
    ofs.open("text.txt", ios::out);
    ofs << "write message" << endl;
    ofs.close();
}

(3) 读取txt

#include <fstream>
void ReadTXT()
{
    ifstream ifs;
    ifs.open("text.txt", ios::in);
    if (!ifs.is_open()) {
        cout << "文件打开失败!" << endl;
        return;
    }
    // 方式一
    char buf[1024] = { 0 };
    while (ifs >> buf) {
        cout << buf << endl;
    }
    // 方式二
    char buf[1024];
    while (ifs.getline(buf, sizeof(buf))) {
        cout << buf << endl;
    }
    // 方式三
    string buf;
    while (getline(ifs, buf)) {
        cout << buf << endl;
    }
    // 方式四,不推荐用
    char c;
    while ((c=ifs.get()) != EOF) {
        cout << c;
    }
    ifs.close();
}

 

posted @ 2020-04-03 15:07  zero_to_infinity  阅读(1151)  评论(0编辑  收藏  举报