有一个C++的基础小问题,一直不知道咋解决,想请教一下万能的网友

问题背景

想通过一个线程对文件进行读写,但是打开节点以后读写会报错

上代码
std::thread keep_screen_on_thread;

void keep_screen_on() {

    std::fstream fs("D:/2022_03/080322/screen");
    std::string content = "121211221";

    if (!fs.is_open()) {
        printf("Open node error!\n");
        return;
    }

    printf("Open node success!\n");

    keep_screen_on_thread = std::thread([&] {
            mu.lock();
            //报错位置
            fs << content;
            printf("content = %s\n", content.c_str());
            mu.unlock();
        });
}

int main() {

    keep_screen_on();

    keep_screen_on_thread.join();

    getchar();

    return 0;
}
运行结果及报错内容

img

img

问题出在fs<<content,基础有点忘了,网友们帮看下怎么解决

你用多线程,用lamda表达是要注意变量的生存期