c++ - Visual Studio : E0349 no operator << matches these operands (but no strings in code)

标签 c++ visual-studio c++11

无法编译我的代码 - 我得到:没有运算符“<<”匹配这些操作数

我发现了类似的问题no operator "<<" matches these operands ,但是我没有字符串,也没有缺少指令(我认为)

有人可以帮我吗? :)

#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <iomanip> 
#include <vector>

void convBase(int base, int n);

using std::cout; 
using std::endl; 
using std::setw;
using std::vector;

int main()
{

    int numbs[] = { 61, 0, -9, -200, 9999 };
    int bases[] = { 16, 8, 2, 20, 36 };
    size_t size = sizeof(numbs) / sizeof(*numbs);

    for (size_t i = 0; i < size; ++i) {
        cout << setw(4) << numbs[i] << " = " << setw(5) 
        << convBase(numbs[i], bases[i]) << " in base " 
        << setw(2) << bases[i] << endl;
        }
    return 0;

}

void convBase(int n, int base) {
    char pierwszyZnak = 48;
    char pierwszaLitera = 65;
    vector<char> system;
    vector<char> liczba;

    for (int i = 0; i < base; i++) {
        if (i <= 9) {
            system.push_back(pierwszyZnak);
            pierwszyZnak++;
        }
        else if (i <= 36) {
            system.push_back(pierwszaLitera);
            pierwszaLitera++;
        }
        else {
            cout << "podales za duza liczbe: " << base << ". Musisz podac liczbe mniejsza badz rowna 36" << endl;
            return;
        }
    }

    while (n > 0) {
        int rem = n % base;
        int rem2 = floor(n / base);
        liczba.push_back(system[rem]);
        n = rem2;
    }

    for (unsigned int i = liczba.size(); i-- > 0; )
        std::cout << liczba[i];
}

最佳答案

convBase 返回 void,但您试图将其返回值流式传输到 std::cout。你的函数应该返回一个字符串表示,静默。返回 std::stringstd::ostream 而不是 void。

我建议创建一个 std::stringstream 然后将您的输出流式传输到它。您可以将最后一个 std::cout 替换为流的名称,然后调用它的 str() 方法来获取返回值。 (您还应该确保在给函数输入错误字符时验证该函数的行为是否可预测。)

关于c++ - Visual Studio : E0349 no operator << matches these operands (but no strings in code),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48737777/

相关文章:

c++ - G++ 4.5.0 中的 std::forward_as_tuple

c++ - C++ 中的延迟评估包装类?

当存在移动和复制构造函数时,C++ 默认构造函数未使用 "using"继承

c++ - Qt Phonon MediaObject 转换错误

c++ - DLL 和 STL 以及静态数据(天哪!)

visual-studio-2010 - Visual Studio 2010 RTM 未使用 ClickOnce 发布

c++ - 如何为 operator[] 指定返回类型?

c++ - 如何在 ARM 的 IAR 嵌入式工作台中编译包含 C 和 C++ 源文件的项目?

c++ - 声明一个类的变量而不创建它的实例

c++ - 检测 Windows TDR 并从中恢复?