cc++有关文件读写的操作

    xiaoxiao2021-03-25  124

    读取文件夹中的所有文件名

    #include <dirent.h>

    void getImages(std::string &dir,std::vector<std::string> &files)

    {

        DIR *dp;

        struct dirent *dirp;

        if((dp  = opendir(dir.c_str())) == NULL)

        {

            return -1;

        }

        

        int ImgNum = 0;

        

        while ((dirp = readdir(dp)) != NULL)

        {

            std::string name = std::string(dirp->d_name);

            if(name != "." && name != ".." && name !=".DS_Store")

            {

                files.push_back(name);

                ImgNum++;

            }

        }

        closedir(dp);

    }

    boost 数字转字符串

    #include <boost/lexical_cast.hpp>

    boost::lexical_cast<std::string>(i);

    存文件

    #include <iomanip>

    #include <sstream>

    #include <fstream>

    #include <iostream>

    #include <boost/lexical_cast.hpp>

    string outputName = "descriptors_" + boost::lexical_cast<std::string>(1) + ".txt";

    ofstream of;

    of.open(outputName);

    float a = 1.0;

    of<< std::setprecision(6)<<a<<endl;

    of.close();

    设置填0格式名

    std::stringstream oo;

    int i = 1;

    oo<<std::setfill(‘0')<<std::setw(2)<<i;

    读取文件流转opencv cv::Mat

    #include <iterator>

    #include <iostream>

    #include <sstream>

    #include <fstream>

    #include <iomanip>

    // openFile

        std::ifstream inFile(filePath.c_str(), ios_base::in);

        if(!inFile.is_open())

        {

            cout << "error: read filed" << endl;

            return;

        }

        

        // load data flow

        istream_iterator<float> begin(inFile);

        istream_iterator<float> end;

        vector<float> inData(begin,end);

        cv::Mat tmpMat = cv::Mat(inData, CV_32FC1);

        

        int rows = inData.size()/64;

        int cols = 64;

        coarseIndex = tmpMat.reshape(cols, rows).clone();

    转载请注明原文地址: https://ju.6miu.com/read-20756.html

    最新回复(0)