【问题标题】:Invalid operands to binary expression after using vector function C++使用向量函数 C++ 后二进制表达式的无效操作数
【发布时间】:2019-03-17 06:01:15
【问题描述】:

尝试创建与头文件和主函数链接的字符串向量函数似乎存在问题。我成功地运行了另一个具有相同主文件、头文件和函数文件的字符串函数。

请记住,我是一名 C++ 初学者,我已经在其他帖子上寻找解决方案一个小时了。对我的代码的任何建议也很感激。

标题:

#ifndef splitter
#define splitter

#include <iostream>
#include<string>
#include<vector>
#include<cctype>
using std::cout;using std::endl;using std::cin;
using std::vector;
using std::string;

vector<string> split (const string &s, char separator=' ');

#endif

主要:

#include"functions.h"

#include <iostream>
using std::cout;using std::endl;using std::cin;
#include<string>
using std::string;
#include<vector>
using std::vector;

int main() {

cout << split("test", 'a') << endl;

return 0;
}

功能:

#include "functions.h"

#include <iostream>
#include<string>
#include<vector>
using std::cout;using std::endl;using std::cin;
using std::vector;
using std::string;

vector<string> split(const string &s, char separator) {
    vector<string> thing;
    thing.push_back(s);
    return thing;
}

我的错误信息:

二进制表达式的无效操作数('std::__1::ostream' (aka 'basic_ostream') 和 'vector' (aka 'vector, allocator >>'))

【问题讨论】:

    标签: c++


    【解决方案1】:

    没有将std::vector&lt;std::string&gt; 插入到cout 的功能。因此这条线

    cout << split("test", 'a') << endl;
    

    是个问题。将其更改为:

    auto res = split("test", 'a');
    for ( auto const& item : res )
    {
       std::cout << item << " ";
    }
    std::cout << std::endl;
    

    【讨论】:

    • 非常感谢!您是否有任何推荐来源,我可以在其中找到有关 c++ 的向量和其他抽象概念的信息?
    • @Dracep,您可以从这本highly recommended list of good textbooks 中选择任何初学者级别的书。
    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多