错误:与 std::operator<< <std::char_traits<char> >(*&std::cout),((常量字符*)中的运算符<<不

error: no match for operator<< in std::operator<< <std::char_traits<char> >(*&std::cout),((const char*)

本文关键字:lt std gt char 字符 常量 运算符 错误 traits operator cout      更新时间:2023-10-16

错误: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’)

这就是你所需要的。