gpt4 book ai didi

c++ - 如何同时写入单个文件?

转载 作者:行者123 更新时间:2023-11-28 06:13:09 26 4
gpt4 key购买 nike

假设我有两个文件要读取。如何同时将每个文件的文件内容写入另一个文件?目前,我正在将每个文件的内容读入一个 vector 并在读取部分周围放置锁,但是当我在写入过程中做类似的事情时,我只能在输出文件中看到其中一个文件的内容。

我正在使用 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);
}

最佳答案

您应该将模式(第二个参数)传递给 ofstream 的构造函数( http://www.cplusplus.com/reference/fstream/ofstream/ofstream/ )ofstream out( "Foo", std::ofstream::app)

否则每次调用 write 时文件都会被覆盖。

并发是一个不同的问题。如果您的问题由本质上顺序的部分组成,并发性就没有多大意义。

关于c++ - 如何同时写入单个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30854361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com