C++文件操作

这篇博客汇总了C++中处理文件和目录的各种操作,包括读写txt文件、逐行读取、追加数据、创建新目录、判断文件存在、格式化输出字符串、去除文件名后缀、解析文件路径、遍历文件夹等实用技巧,适用于Windows和Linux环境。
摘要由CSDN通过智能技术生成

保存到txt
https://blog.csdn.net/CV_YOU/article/details/79160755

读写txt本文的基本操作
https://blog.csdn.net/naibozhuan3744/article/details/78678571

逐行读取txt文件
https://blog.csdn.net/stpeace/article/details/12404925

将数据添加到文件的末尾
write.open("result.txt", ios::app);
https://blog.csdn.net/qq_23880193/article/details/44279283
 

创建新的文件夹

windows环境下也可用函数_mkdir:

_mkdir(const char *_Path)

https://blog.csdn.net/u012005313/article/details/50688257

_mkdir(dirName.c_str());
https://blog.csdn.net/lsq2902101015/article/details/46756075


Linux
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <cstddef>
int main()
{
 if(NULL==opendir("/d1/liujian/readdb/adTest/data/html"))
   mkdir("/d1/liujian/readdb/adTest/data/html",0775);
 return 0;
}
https://blog.csdn.net/ai2000ai/article/details/46454549
 

Linux下判断目录/文件是否存在

    if ((dp = opendir(path)) == NULL)
    {
        return 0;
    }
https://my.oschina.net/Tsybius2014/blog/338232
 

将数据格式化输出到字符串
char filename[1024];//需要预先分配缓冲区
char path1[128] = "D:\\Program\\Tesseract-OCR\\tesseract.exe";
char path2[128] = "D:\\Program\\Tesseract-OCR\\";
char path3[128] = "D:\\Program\\Tesseract-OCR\\txt";
char path4[128] = "-l chi_sim";
sprintf_s(filename,"%s %s %s %s",path1,filepath,path3,path4);
https://blog.csdn.net/tigernana/article/details/6916491

sprintf(s, "%d", 123); //产生"123"可以指定宽度,不足的左边补空格:
sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"当然也可以左对齐:
sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
https://blog.csdn.net/Jane_yuhui/article/details/72787981
 

string 文件名去后缀

string imgName = "001.jpg";

string pureName = imgName.substr(0, imgName.rfind("."));
https://blog.csdn.net/Tobyzzy/article/details/80463255

解析文件路径
_splitpath( path_buffer, drive, dir, fname, ext );
https://blog.csdn.net/Jeanphorn/article/details/44937097

linux下获取文件名
http://www.voidcn.com/article/p-zfhyjpgb-bbm.html
 

遍历文件夹

windows
void getFiles(string path, string exd, vector<string>& files)  
{  
    //cout << "getFiles()" << path<< endl;   
    //文件句柄  
    long   hFile = 0;  
    //文件信息  
    struct _finddata_t fileinfo;  
    string pathName, exdName;  
  
    if (0 != strcmp(exd.c_str(), ""))  
    {  
        exdName = "\\*." + exd;  
    }  
    else  
    {  
        exdName = "\\*";  
    }  
  
    if ((hFile = _findfirst(pathName.assign(path).append(exdName).c_str(), &fileinfo)) != -1)  
    {  
        do  
        {  
            //cout << fileinfo.name << endl;   
  
            //如果是文件夹中仍有文件夹,迭代之  
            //如果不是,加入列表  
            if ((fileinfo.attrib &  _A_SUBDIR))  
            {  
                if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)  
                    getFiles(pathName.assign(path).append("\\").append(fileinfo.name), exd, files);  
            }  
            else  
            {  
                if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)  
                    files.push_back(pathName.assign(path).append("\\").append(fileinfo.name));  
            }  
        } while (_findnext(hFile, &fileinfo) == 0);  
        _findclose(hFile);  
    }  
}  
https://blog.csdn.net/lhanchao/article/details/53576311
https://blog.csdn.net/zyazky/article/details/52679525

Linux 下 C++ 遍历文件夹下的文件名

#include <string>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
 
 
const char* filePath = "./imgs";
void GetFileNames(string path,vector<string>& filenames)
{
    DIR *pDir;
    struct dirent* ptr;
    if(!(pDir = opendir(path.c_str()))){
        cout<<"Folder doesn't Exist!"<<endl;
        return;
    }
    while((ptr = readdir(pDir))!=0) {
        if (strcmp(ptr->d_name, ".") != 0 && strcmp(ptr->d_name, "..") != 0){
            filenames.push_back(path + "/" + ptr->d_name);
    }
    }
    closedir(pDir);
}
https://blog.csdn.net/weixin_38419133/article/details/103561532
https://blog.csdn.net/yangguangqizhi/article/details/50414029
 

c++读取txt文件,按空格分割字符串

#include<sstream>

                while (getline (fin, line_info)) // line中不包括每行的换行符
                {
                            stringstream input(line_info);
                            //依次输出到input_result中,并存入vectorString中
                            cout<<"line_info: "<<line_info<<endl;
                            while(input>>input_result)
                                vectorString.push_back(input_result);

                            for(int j=0;j<vectorString.size();j++){
                                   cout<<vectorString[j]<<endl;
                               }
                    }
https://www.jianshu.com/p/c096442f04ce
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WX Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值