Visual studio:E0349 没有运算符<<匹配这些操作数(但代码中没有字符串)
Visual studio: E0349 no operator << matches these operands (but no strings in code)
无法编译我的代码 - 我得到:没有操作员"&lt;&lt;"匹配这些操作数
我发现类似问题没有操作员"&lt;&lt;&quot"匹配这些操作数,但是我没有字符串,也没有丢失的指令(我认为(
有人可以帮我吗?:(
#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::string
或std::ostream
而不是void。
我建议创建一个std::stringstream
,然后将您的输出流式传输。您可以用流的名称替换最后的std::cout
,然后调用其str()
方法以获取返回值。(您还应确保在给出不良字符时验证功能的行为。(
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 控制允许动态运行c++的并发操作数
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- <<操作员在下面的行中工作
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- C++ 带有向量的 IF 计算操作数
- 是否所有C++运算符都接受操作数?
- 一元*运算符的操作数是否期望一个 prvalue
- 与'operator='不匹配(操作数类型'String'且"void")
- 不正确的操作数类型 MSVC
- C2678 二进制 '==':未找到采用 'Card' 类型左操作数的运算符(或者没有可接受的转换)
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- 没有运算符"="与这些操作数匹配,JUCE 窗口演示应用程序
- 如果我在指针中使用 ++ 操作数,我的值就会出错
- 二进制表达式的操作数无效 - 使用 for 和迭代器
- C2679 二进制"<<":未找到采用右操作数类型的运算符
- CPP 运算符重载操作数位置 [] 与 ==