在Linux下,C++可以使用多种方法进行文件操作。以下是一些常用的方法:
#include <iostream>
#include <fstream>
int main() {
std::ifstream infile("input.txt");
std::ofstream outfile("output.txt");
int num;
while (infile >> num) {
outfile << num * 2 << std::endl;
}
infile.close();
outfile.close();
return 0;
}
#include <cstdio>
int main() {
FILE *infile = fopen("input.txt", "r");
FILE *outfile = fopen("output.txt", "w");
int num;
while (fscanf(infile, "%d", &num) != EOF) {
fprintf(outfile, "%d\n", num * 2);
}
fclose(infile);
fclose(outfile);
return 0;
}
#include <iostream>
#include <fcntl.h>
#include <unistd.h>
int main() {
int infile = open("input.txt", O_RDONLY);
int outfile = open("output.txt", O_WRONLY | O_CREAT, 0644);
char buffer[1024];
ssize_t bytes_read;
while ((bytes_read = read(infile, buffer, sizeof(buffer))) > 0) {
write(outfile, buffer, bytes_read);
}
close(infile);
close(outfile);
return 0;
}
#include <boost/asio.hpp>
#include <iostream>
int main() {
boost::asio::io_context io_context;
boost::asio::posix::stream_descriptor infile(io_context, open("input.txt", O_RDONLY));
boost::asio::posix::stream_descriptor outfile(io_context, open("output.txt", O_WRONLY | O_CREAT, 0644));
char buffer[1024];
std::size_t bytes_transferred;
while (boost::asio::read(infile, boost::asio::buffer(buffer), boost::asio::transfer_all()) > 0) {
boost::asio::write(outfile, boost::asio::buffer(buffer, bytes_transferred));
}
return 0;
}
这些方法可以根据需要选择使用。对于简单的文件操作,C++ I/O库和C I/O库通常足够使用。如果需要更高的性能或者跨平台支持,可以考虑使用POSIX文件I/O或Boost.Asio。