c/c++有关文件读写的操作

来源:互联网 发布:香港保险 知乎 编辑:程序博客网 时间:2024/06/08 17:54

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

#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();

0 0
原创粉丝点击