读取文件并将其内容写入另一个C ++

时间:2014-11-24 23:35:06

标签: c++

所以我正在编写一个函数来读取文件并将其内容放入另一个文件中。这是我到目前为止所得到的:

void myFile::printWords(string input, string output) {
 ifstream file(input.c_str());
 ofstream file_out(output.c_str());
 string word;

 if(!file.is_open())
 {
  printf("File can't be opened\n");
  exit(o);
 }
 while(file >> word) {
  cout<< word << '\n';
 }
 file.close();

}

问题是如何继续写入文件?

2 个答案:

答案 0 :(得分:6)

你不太需要iostream来复制文件;你只需要原始流缓冲区。例如,这是一个完整的复制程序:

#include <algorithm>   // for std::copy
#include <cstdlib>     // for EXIT_FAILURE
#include <fstream>     // for std::filebuf
#include <iterator>    // for std::{i,o}streambuf_iterator

int main(int argc, char *argv[])
{
    if (argc != 3) { return EXIT_FAILURE; }

    std::filebuf infile, outfile;
    infile.open(argv[1], std::ios::in | std::ios::binary);
    outfile.open(argv[2], std::ios::out | std::ios::binary);

    std::copy(std::istreambuf_iterator<char>(&infile), {},
              std::ostreambuf_iterator<char>(&outfile));
}

答案 1 :(得分:2)

而不是在单词bassis上执行此操作,而不是使用空格,你可以(如果你真的想使用c ++)使用文件的char []转储

std::fstream ifile(input.c_str(), std::ios::in | std::ios::binary | std::ios::ate);
std::fstream ofile(output.c_str(), std::ios::out | std::ios::binary);

if (!(ifile.is_open() && ofile.is_open())) { handle_error(); }

size_t size   = ifile.tellg();
char*  buffer = new char[size];

ifile.seekg(0, std::ios::beg);
ifile.read(buffer, size);
ofile.write(buffer, size);

ifile.close();
ofile.close();

使用您的操作系统功能仍然会更有意义