【问题标题】:How to write vectors member to file如何将向量成员写入文件
【发布时间】:2023-01-24 22:51:14
【问题描述】:

我正在尝试将 vector 的成员写入文件,但在循环操作时出现此错误:

no operator "<<" matches these operands

我怎样才能将这些成员写入文件?

std::ofstream raport;
raport.open("test.txt", std::ios_base::app);
    
std::vector<std::vector<float>> targetInputs = {
    {0.0f, 0.0f},
    {1.0f, 1.0f},
    {1.0f, 0.0f},
    {0.0f, 1.0f}
};

for (int i = 0;i < targetInputs.size(); i++) {
    
    raport << targetInputs[i];
}

【问题讨论】:

  • 您不是从 vector 编写成员(那些是 vector 内部的),而是试图将 vectors 项写入文件。在这种情况下,你有一个向量的向量,所以你需要两个循环。在这种情况下考虑使用range based for loops
  • 您需要阅读完整的错误信息。它包含的信息比您在此处包含的信息多得多。它应该告诉您代码中需要什么运算符 <<,它应该告诉您两个操作数的类型。

标签: c++ for-loop vector ofstream


【解决方案1】:

基于范围的 for 循环示例。 const 引用在那里,因为输出不应该修改输入数据。 ostringstream 是您文件的标准流。

#include <iostream>
#include <sstream>
#include <vector>

int main()
{
    std::ostringstream raport;
    //raport.open("test.txt", std::ios_base::app);

    std::vector<std::vector<float>> targetInputs = {
        {0.0f, 0.0f},
        {1.0f, 1.0f},
        {1.0f, 0.0f},
        {0.0f, 1.0f}
    };

    for (const auto& values : targetInputs)
    {
        for (const auto& value : values)
        {
            raport << value << " ";
        }
        raport << "
";
    }

    std::cout << raport.str();

    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2013-03-26
    • 2021-03-20
    相关资源
    最近更新 更多