C++ 应用程序消除了多个空格和元音。C++;哎呀

C++ 应用程序消除了多个空格和元音。C++;哎呀,c++,oop,C++,Oop,我正在尝试实现一个应用程序,它建立一个接收者、发送者和消息,由用户给定,Mensaje类中的方法“elimnarBlc”是消除一行中的多个空格,例如,如果消息是“Hello\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuworld”,则该方法必须将其转换为“Hello\uuuworld” “eliminarVlc”方法用于消除所有元音,如“Hello World”->“Hll Wrld” 当我尝试使用“”来表示空白时,它给了我一个错误:“ISO C++禁止指针和整数的比较”。如

我正在尝试实现一个应用程序,它建立一个接收者、发送者和消息,由用户给定,Mensaje类中的方法“elimnarBlc”是消除一行中的多个空格,例如,如果消息是“Hello\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuworld”,则该方法必须将其转换为“Hello\uuuworld”

“eliminarVlc”方法用于消除所有元音,如“Hello World”->“Hll Wrld”

当我尝试使用“”来表示空白时,它给了我一个错误:“ISO C++禁止指针和整数的比较”。如图所示:

如果我尝试使用ACII代码(32,表示空白),它会崩溃

有时它会向我抛出一个windows对话框,“Aplication mensajes.exe崩溃”,正如您看到的,当尝试执行“elimarBlc”方法时,它会停止

希望你能帮我解决这个问题:)谢谢

代码如下:

#include <iostream>
#include <stdio.h>
#include <string>
#include <cstring>
using namespace std;

class Mensaje{
  private:
          char emisor[20], receptor[20], mensaje[100];

  public:

  Mensaje (string em, string re, string msj){
          strncpy(emisor, em.c_str(), sizeof(emisor));
          strncpy(receptor, re.c_str(), sizeof(receptor));
          strncpy(mensaje, msj.c_str(), sizeof(mensaje));
          }
  string getEmisor(){
         string em(emisor);
         return em;
         }
  string getReceptor(){
         string re(receptor);
         return re;
         }
  string getMensaje(){
         string msj(mensaje);
         return msj;
         }
  void setEmisor(string em){
       strncpy(emisor, em.c_str(), sizeof(emisor));
       }
  void setReceptor(string re){
       strncpy(receptor, re.c_str(), sizeof(receptor));
       }
  void setMensaje(string msj){
       strncpy(mensaje, msj.c_str(), sizeof(mensaje));
       }
  void muestraMensaje(){
       cout << "\nEmisor: " << emisor;
       cout << "\nReceptor: " << receptor;
       cout << "\nMensaje: " << mensaje;
       }
  void eliminarBlc(){
       for(int i=0,j=1; i<j<sizeof(mensaje); i++,j++){
               mensaje[i]=mensaje[j-1];
               if(mensaje[i]==32 && mensaje[j]==32){
                                 i--;
               }
       }
  }
  void eliminarVcl(){
       for(int i=0,j=0; i<j<sizeof(mensaje); i++, j++){
               mensaje[i]=mensaje[j];
               if(mensaje[i]==97||mensaje[i]==65||mensaje[i]==101||mensaje[i]==69||mensaje[i]==105||mensaje[i]==73||mensaje[i]==111||mensaje[i]==79||mensaje[i]==117||mensaje[i]==85){
               i--;
               }
       }
  }
 };

  int main(){

      while(1>0){
      string re;
      string em;
      string msj;

      cout << "\n+++++Realizando mensajes!++++++";
      cout << "\nIngresa el receptor: ";
      getline(cin, re);
      cout << "\nIngresa el emisor: ";
      getline(cin, em);
      cout << "\nIngresa el mensaje: ";
      getline(cin, msj);
      Mensaje Msj(em, re, msj);
      cout << "\n\nEl mensaje que ingresaste es: ";
      Msj.muestraMensaje();
      cout << "\n\nMensaje sin espacios en blanco: ";
      Msj.eliminarBlc();
      Msj.muestraMensaje();
      cout << "\nMensaje sin vocales: ";
      Msj.eliminarVcl();
      Msj.muestraMensaje();  
      getchar();
      getchar();
      }
return 0;
}     
#包括
#包括
#包括
#包括
使用名称空间std;
门萨耶类{
私人:
碳发射子[20],受体[20],门萨杰[100];
公众:
Mensaje(字符串em、字符串re、字符串msj){
strncpy(emior,em.c_str(),sizeof(emior));
strncpy(受体,re.c_str(),sizeof(受体));
strncpy(mensaje,msj.c_str(),sizeof(mensaje));
}
字符串getemissor(){
字符串em(emissor);
返回em;
}
字符串getReceptor(){
串re(受体);
返回re;
}
字符串getMensaje(){
字符串msj(mensaje);
返回msj;
}
void setemissor(字符串em){
strncpy(emior,em.c_str(),sizeof(emior));
}
无效设置接收器(字符串re){
strncpy(受体,re.c_str(),sizeof(受体));
}
void setMensaje(字符串msj){
strncpy(mensaje,msj.c_str(),sizeof(mensaje));
}
void muestraMensaje(){
不能改变
i