0
假設我有兩個文件需要讀取。我怎樣才能將每個文件的文件內容同時寫入另一個文件?目前,我正在將每個文件的內容讀入一個向量中,並在讀取部分放置鎖,但是當我在寫入過程中執行類似操作時,我只能看到來自輸出文件中某個文件的內容。如何同時寫入單個文件?
我正在用g ++ -std = C++ 11 -pthread program_name編譯。任何意見或批評歡迎。
#include <iostream>
#include <thread>
#include <string>
#include <mutex>
#include <vector>
void read(const char *file);
void write(const vector<string> &v);
void read(const char *file) {
string line;
vector<string> v;
ifstream in(file);
m.lock();
while(getline(in, line)) {
v.push_back(line);
}
in.close();
m.unlock();
write(v);
}
void write(const vector<string> &v) {
ofstream out("Foo");
vector<string>::const_iterator it;
m.lock();
for(it = v.begin(), it != v.end(); ++it) {
out << *it << endl;
}
out.close();
m.unlock();
}
int main(int argc, char *argv[]) {
thread t[2];
for(int i = 1; i < 3; i++) {
t[i-1] = thread(read, argv[i]);
}
for(int k = 0; k < 2; k++) {
t[i].join();
}
return(0);
}
您首先合併矢量,然後寫出結果的輸出。 –
您正在閱讀2個文件。你正在寫一封信。每位作家打開文件,並從頭開始寫作。請注意,'ofstream out(「Foo」)'寫入文件,並且不受互斥體的保護。鎖定它,並確保你處於追加模式。 – Yakk
@Yakk完美。是的,這是問題所在。另外,不知道追加模式。感謝那。 – ChrisD