在C++中同時讀取多個文件,可以使用多線程或者多進程來實現。以下是使用多線程的示例代碼:
#include <iostream>
#include <fstream>
#include <vector>
#include <thread>
void read_file(const std::string& filename) {
std::ifstream file(filename);
if (file.is_open()) {
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
} else {
std::cerr << "Error opening file: " << filename << std::endl;
}
}
int main() {
std::vector<std::string> filenames = {"file1.txt", "file2.txt", "file3.txt"};
std::vector<std::thread> threads;
for (const auto& filename : filenames) {
threads.push_back(std::thread(read_file, filename));
}
for (auto& thread : threads) {
thread.join();
}
return 0;
}
在上面的代碼中,我們定義了一個read_file
函數用來讀取單個文件的內容,然后在main
函數中創建了多個線程來同時讀取多個文件。每個線程負責讀取一個文件,最后等待所有線程執行完成。
需要注意的是,多線程讀取文件時要注意文件的互斥訪問,可以使用互斥鎖或者其他同步機制來保證文件的讀取不會發生沖突。