簡體   English   中英

打印向量值時二進制表達式錯誤的無效操作數

[英]Invalid operands to binary expression error upon printing vector values

我的程序正在接收由空格分隔的文件值,但是當我嘗試打印出向量時出現這個奇怪的錯誤(循環向量有效,但是我保存數據以稍后解析的那個,我得到無效的操作數錯誤)。 這是錯誤的樣子:

joj.cpp:36:13: error: invalid operands to binary expression ('std::__1::ostream' (aka 'basic_ostream<char>') and
      'std::__1::__vector_base<std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >,
      std::__1::allocator<std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > >::value_type' (aka
      'std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >'))
                std::cout << data[i] << " ";
                ~~~~~~~~~ ^  ~~~~~~~

這是我的代碼:

#include <vector>
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>

int main()
{
    std::vector<std::vector<unsigned int> > data;
    
    
    std::ifstream file("primer_vhoda.txt");

    std::string line;
    while(std::getline(file, line))
    {
        std::vector<unsigned int>   lineData;
        std::stringstream  lineStream(line);

        int value;
        while(lineStream >> value)
        {
            lineData.push_back(value);
        }
        data.push_back(lineData);
    
        for(int i = 0; i<lineData.size(); i++)
            std::cout << lineData[i] << " ";
    }
    
    for(int i = 0; i<data.size();i++){
        std::cout << data[i] << " ";
    }

}

我要打印的是我的數據向量( data.push_back(lineData); )但我似乎找不到問題,謝謝幫助

data[i]是一個std::vector<unsigned int> - 沒有operator<<重載。 您還需要遍歷內部向量。 例子:

for(auto& inner_vector : data) {
    for(auto value : inner_vector) {
        std::cout << value << ' ';
    }
    std::cout << '\n'; // if you want a newline after each row
}

或使用前 C++11 (沒有基於范圍的 for 循環):

for(size_t i = 0; i < data.size(); ++i) {
    for(size_t j = 0; j < data[i].size(); ++j) {
        std::cout << data[i][j] << ' ';
    }
    std::cout << '\n'; // if you want a newline after each row
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM