我想知道如何使用c ++ ifstream / ofstream复制文件并将其另存为另一个名称。
这是我得到的。我知道如何获取文件,只是因为我不知道如何复制该文件并将其另存为其他名称。
#include<iostream>
#include<fstream>
#include<string>
namespace std;
int main()
{
ofstream
ifstream
cout << "enter your file you want to copy"<< endl;
cin >> input_file_name;
in_file.open(input_file_name);
if (!in_file)
{
cout <<" there is no such file"<<endl;
return 0;
}
cout <<" enter the name you want to save this copy file"<<endl;
cin >> output_file_name;
out_file.open(output_file_name);
if (!out.file)
{
cout<<"file is not available"<<endl;
return 0;
}
in_file.close();
out_file.close();
return 0;
}
答案 0 :(得分:1)
rdbuf
的 <<
是标准的方法。
ifstream src;
ofstream dst;
src.open("from", ios::in | ios::binary);
dst.open("toto", ios::out | ios::binary);
dst << src.rdbuf();
答案 1 :(得分:0)
基本上,您希望一次读取一个字符并将所述字符写入输出流。有一个get()重载,它接受一个可以工作的streambuf输出变量。您也可以在cplusplus.com rdbuf文档中使用该示例。
答案 2 :(得分:0)
下面的代码可以让您了解自己想要做什么。
您应该记住几件事,例如:
- 是给予读取的文件的路径是否有效?
- 或者在推送新数据之前,是否要保存输出文件中的数据(如果该文件存在?)。
您只需在桌面或任何位置创建文件即可测试此代码,只需更改filePath
和destinationPath
变量即可运行代码。 (c ++ 11)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector<string> readFromFile(const char *filePath) {
vector<string> container;
ifstream obj(filePath); // automatically our file would be open
if (obj.is_open()) { // we check anyways
string line = "";
while(getline(obj, line)) {
if (!line.empty()) // prevent us to insert empty line into our vector
container.push_back(line);
}
obj.close(); // close after we finish reading to avoid corruption
}
return container;
}
bool pipingToDestination(vector<string>data, const char *filePath) {
std::filebuf fb; fb.open(filePath,std::ios::out); // open the file
ostream obj(&fb);
if (!data.empty() && fb.is_open()) { // make sure we have some data && the file file is open to write
for (string x: data) { // c++11
obj << x << endl;
}
fb.close();
return true;
}
return false;
}
int main() {
string filePath = "/Users/lamar/Desktop/testFile.txt";
vector<string> data = readFromFile(filePath.c_str());
cout << "File has passed data into container ... \n";
for(string x: data) {
cout << x << endl;
}
cout << "Creating destination file \n";
string destinationPath = "/Users/lamar/Desktop/destFile.txt";
cout << "has piped data into file " << boolalpha << pipingToDestination(data, destinationPath.c_str());
return 0;
}
这不是执行此操作的唯一方法,但此代码应该为您指明方向
答案 3 :(得分:0)
复制文件并将其保存在另一个文件中:
#include <fstream>
#include <iostream>
#include <string>
int main(int arc, char* argv[]) {
std::ifstream file1(argv[1]);
std::ofstream file2(argv[2]);
std::string line;
if (file1.good() && file2.good()) {
while (getline(file1, line)) {
file2 << line;
file2 << '\n';
}
}
file1.close();
file2.close();
}