简体   繁体   中英

c++ combine path of file as a string with file name

I want to read some input files in my c++ code and I want to define the path of input files as a string and then combine it with file names. How can I do this? (Input_path + filename.dat)

#include <filesystem>
#include <iostream>

namespace fs = std::filesystem;
using namespace std;

void main()
{
    string dir("c:\\temp");
    string fileName("my_file.txt");
    
    fs::path fullPath = dir;
    fullPath /= fileName;
    cout << fullPath.c_str() << endl;
}

You would use something like:

string path ("yourFilePath");
string filename ("filename");

You could then open the file like this:

ifstream inputFileStream;
inputFileStream.open(path + fileName);

Depending on your requirements, you will have to decide whether to use formatted or unformatted input when reading. I would read this for more information regarding that.

Cocatenation referenced from: C++ string concatenation Reading referenced from: C++ read and write with files

Try any of these codes:

#include <iostream>
#include <string>
#include <fstream>
int main() {

  std::string filepath = "D:/location/";
  filepath+= "filename.dat";
  std::ifstream fp;
  fp.open(filepath.c_str(),std::ios_base::binary);

  ....PROCESS THE FILE HERE
  fp.close();

    return 0;
}

or

#include <iostream>
#include <string>
#include <fstream>
int main() {

   std::string filepath = "D:/location/";
  std::ifstream fp;
  fp.open((filepath+"filename.dat").c_str(),std::ios_base::binary);

 ...............

  fp.close();
    return 0;
}

or use std::string::append

#include <iostream>
#include <string>
#include <fstream>
int main() {

 std::string filepath = "D:/location/";
  std::ifstream fp;
  fp.open((filepath.append("filename.dat")).c_str(),std::ios_base::binary);



  fp.close();
  return 0;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM