错误:与 std::operator<< <std::char_traits<char> >(*&std::cout),((常量字符*)中的运算符<<不
error: no match for operator<< in std::operator<< <std::char_traits<char> >(*&std::cout),((const char*)
错误:
std::operator<< <std::char_traits<char> >(*&std::cout),((const char*)
中的operator<<
不匹配
#include <iostream>
using namespace std;
int ContarDig (int num){
int contar=1;
while (num>9){
num=num/10;
contar=contar+1;
}
return contar;
}
void arreglo(int a[], int t){
for(int i=(ContarDig(t)-1); i>=0; i--){
a[i]=t%10;
t=t/10;
cout <<"valor posicion[" << i << "]= "<<a[i]<<endl;
}
}
void invertir(int A[],int x){
int l=(ContarDig(x)/2);
int i=0;
int f=ContarDig(x);
for(l;l>=0;l--){
int b=A[i];
A[i]=A[f];
A[f]=b;
i++;
f--;
}
for (i;i<=ContarDig(x);i++){
cout <<"valor posicion[" << i << "]= "<<A[i]<<endl;
}
}
int main(int argc, char *argv[]) {
int x;
cout<<"Digite un numero para invertir"<<endl;
cin>>x;
int A[ContarDig(x)];
arreglo (A,x);
cout<<"========================================================================"<<endl;
cout<< "El arreglo invertido es:" << invertir(A,x) << endl;
return 0;
}
所以,我想知道如何解决我的问题,它的目标是有一个数组并反转它
#include <iostream>
using namespace std;
int ContarDig (int num){
int contar=1;
while (num>9){
num=num/10;
contar=contar+1;
}
return contar;
}
void arreglo(int a[], int t){
for(int i=(ContarDig(t)-1); i>=0; i--){
a[i]=t%10;
t=t/10;
cout <<"valor posicion[" << i << "]= "<<a[i]<<endl;
}
}
void invertir(int A[],int x){
int l=(ContarDig(x)/2);
int i=0;
int f=ContarDig(x)-1;
for(l;l>=0;l--){
int b=A[i];
A[i]=A[f];
A[f]=b;
if (ContarDig(x)==2)
break;
i++;
f--;
}
}
int main(int argc, char *argv[]) {
int x;
cout<<"Digite un numero para invertir"<<endl;
cin>>x;
int A[ContarDig(x)];
arreglo (A,x);
cout<<"========================================================================"<<endl;
cout<< "El arreglo invertido es:" <<endl;
invertir(A,x);
for (int i=(ContarDig(x)-1);i>=0;i--){
cout <<"valor posicion[" << i << "]= "<<A[i]<<endl;
}
return 0;
}
这是我的程序的新版本,现在它运行得很完美。
与标题相关的错误源于这一行:
cout<< "El arreglo invertido es:" << invertir(A,x) << endl;
函数invertir ()
返回void
,无法打印。对编译器来说,这就像写std:: cout <<;
一样,它是无效的。将函数的返回类型更改为合适的类型,或者,不要尝试打印它。调用函数并允许它正常打印(因为函数中有对std:: cout:: operator << ()
的调用)。
你应该尝试解释你所得到的这些错误。尽管这种简单错误的错误跨越了页面(我有194行错误),但只更改一行代码就可以修复所有错误。不要被吓倒,检查给出的行号,并在代码中查找简单的错误。
我的错误看起来是这样的,还有更多的错误。
test92.cpp: In function ‘int main(int, char**)’:
test92.cpp:41:39: error: no match for ‘operator<<’
(operand types are ‘std::basic_ostream<char>’ and ‘void’)
这就是你所需要的。
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 错误:调用"std::vector<:vector<int>>::p ush_back(std::vector<std::__cxx11::basic_string<
- C 建造者Clang STD :: Sill,找不到超载的操作员&lt;
- 为什么STD :: MAP需要操作员&lt;以及我如何写一个
- std::vector::reserve(未知m),我知道m<<;N(通常)并且知道N
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- C++运算符<<调用::ostream而不是std::osttream
- 是std :: set&lt; std :: future&gt;不可能存在
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- BOOST ::变体无法解决运算符&lt;&lt;对于STD :: Ostream
- C++重载<<具有typedef'd std::vector
- 以x的倍数填充前导零,使用std::cout<<std::十六进制
- 错误:没有匹配'运算符<<"在'std::cout
- std::pair的默认构造函数<>将基本类型(int等)设置为零
- std::ostream&operator< & lt; (std:: ostream&压力,压力& &;val)
- 将std::endl传递给std::operator<<
- std::映射<>或std::vector<>在处理大型标志集时
- 重载& lt; & lt;使用命名空间std