gpt4 book ai didi

c++ - 如何使用 ostream_iterator 打印到文件?

转载 作者:行者123 更新时间:2023-11-30 03:28:11 25 4
gpt4 key购买 nike

我有以下代码(来自 here)随机化一个包含 1500 个值的 vector ,我想将它们放在文本文件中但不能。老实说,我并不完全理解这段代码是如何工作的,所以我希望有人向我解释它是如何工作的和/或如何将输出更改为文件。

#include <iostream>
#include <random>
#include <algorithm>
#include <iterator>
#include <fstream>

int main() {
std::vector<int> v;
for (int i; i<1500; ++i){
v.push_back(i);
}

std::random_device rd;
std::mt19937 g(rd());

std::shuffle(v.begin(), v.end(), g);

std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << "\n";

return 0;
}

最佳答案

std::cout 的类型和std::ofstream 的类型均派生自std::ostream,即std::ostream_iterator 操作的相同类型:

#include <iostream>
#include <random>
#include <algorithm>
#include <iterator>
#include <fstream>

void emit_values(std::ostream& os)
{
std::vector<int> v;
for (int i = 0; i<1500; ++i){
v.push_back(i);
}

std::random_device rd;
std::mt19937 g(rd());

std::shuffle(v.begin(), v.end(), g);

std::copy(v.begin(), v.end(), std::ostream_iterator<int>(os, " "));
os << "\n";
}

int main()
{
// use stdout
emit_values(std::cout);

// use a file
std::ofstream fs("values.txt");
emit_values(fs);
fs.close();

return 0;
}

关于c++ - 如何使用 ostream_iterator 打印到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46800762/

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