Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何创建std::ofstream s的向量并将流写入不同的文本文件_C++_Stringstream - Fatal编程技术网

C++ 如何创建std::ofstream s的向量并将流写入不同的文本文件

C++ 如何创建std::ofstream s的向量并将流写入不同的文本文件,c++,stringstream,C++,Stringstream,我只是尝试使用std::ofstreams的std::vector将一些数字写入几个不同的文件。我的程序正在编译和运行,文件正在生成,但文件中没有文本 #include <iostream> #include <fstream> #include <vector> int main() { auto num_components = 3; std::vector<std::ofstream> files_to_be_writte

我只是尝试使用
std::ofstream
s的
std::vector
将一些数字写入几个不同的文件。我的程序正在编译和运行,文件正在生成,但文件中没有文本

#include <iostream>
#include <fstream>
#include <vector>

int main()
{

    auto num_components = 3;
    std::vector<std::ofstream> files_to_be_written;
    files_to_be_written.resize(num_components);

    for (auto i = 0; i < num_components; ++i){
      std::string file_name = "text" + std::to_string(i) + ".txt";
      files_to_be_written.emplace_back(std::ofstream{ file_name });
    }

    std::vector<std::vector<int>> data_to_be_written;
    data_to_be_written.resize(num_components);
    data_to_be_written[0].push_back(1);
    data_to_be_written[0].push_back(2);
    data_to_be_written[0].push_back(3);
    data_to_be_written[1].push_back(4);
    data_to_be_written[1].push_back(5);
    data_to_be_written[1].push_back(6);
    data_to_be_written[2].push_back(7);
    data_to_be_written[2].push_back(8);

    for (auto& it : data_to_be_written)
    {
        auto idx = &it - &data_to_be_written[0];
        for (auto i = it.begin(); i != it.end(); ++i)
        {
            files_to_be_written[idx] << *i << "\n";
        }
    }

    for (auto i = 0; i < num_components; ++i){
        files_to_be_written[i].close();
    }
}
#包括
#包括
#包括
int main()
{
自动元件数量=3;
std::要写入的向量文件;
要写入的文件。调整大小(组件数量);
用于(自动i=0;i
files_to_be_written.resize(num_components);


不向向量添加任何新元素,只为它们分配内存。

虽然我不确定问题出在哪里,但我想指出几个看起来很奇怪的地方。迭代整数,而不是
for(auto&it:data\u to\u be\u writed)
和随后的指针魔术来获取索引。一旦你将vector更改为deque,你就注定要失败。此外,在Main结束时不需要关闭。我还猜想,将std::ofstream对象移动到一个vector中会对你的流产生意想不到的影响。尝试智能指针
for (auto& it : data_to_be_written)
{
    auto idx = &it - &data_to_be_written[0];
    for (auto i = it.begin(); i != it.end(); ++i)
    {
        files_to_be_written[idx] << *i << "\n";
    }
}
files_to_be_written.resize(num_components);
files_to_be_written.reserve(num_components);