Ir ao conteúdo
  • Cadastre-se

C++ Como usa funções em manipulações de strings??


Mr-86

Posts recomendados

boa tarde!

estou tendo problemas com o meu codigo(de novo),

estou tentando verificar se numa string a primeira "casa" é uma letra e as outras sao dígitos, letra ou "_", mas infelizmente não entendi como usa as funções para a verificação.

quando executo o codigo parece que ele simplesmente ignora o "if", sera que alguém pode me dar uma luz??

 

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    string palav = "";
    int i=0, n;
    char resp;
    bool achou=false;

    do{
    cout << "Digite uma palavra " << endl;
    getline(cin, palav);
    }while(palav == " ");


    if(isalpha(palav[i]) == true){
      for(i=1; i<=palav.size(); i++){
        if(isalnum(palav[i]) == true and palav[i] == '_'){
            achou = true;
        }else{
          achou = false;
          resp = palav[i];
          break;
        }
      }
    }

    if(achou == true){
        cout << "A sua entrada foi permitida";
    }else{
      cout << "entrada invalida";
    }

    return 0;
}

Ps. não me julgue caso eu tenha feito uma burrice mt grande, estou mt enferrujado com manipulação de strings.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Mr-86     as funções isalnum e isalpha não precisam de comparador "true ou false" ,  e no "IF"  ele nunca seria executado , pois  se for alfanumeric não seria "and"  também  igual  a underline , e sim "or"  ou uma coisa ou outra ,  e esse trecho poderia ser assim  :

string palav = "";
do
{
  cout << "Digite uma palavra " << endl;
  getline(cin, palav);
} while(palav == "");                /// igual a vazio
if( isalpha( palav[i] )/* == true*/) /// checa se eh letra
{ 
  cout << palav[i] << " Eh  Uma Letra !" << endl;
  for(i=0; i<palav.size(); i++)      /// vetor comeCa em zero
  {
    if(isalnum(palav[i]) /*== true*/ /// checa se eh letra ou dIgito numErico
       or palav[i] == '_' )          /// ou eh caractere special underline
    {
      achou = true;
    }
    else

 

Link para o comentário
Compartilhar em outros sites

@devair1010 tentei aplicar o que você falou, mas continua dando o mesmo erro. ele continua exibindo a mensagem de entrada invalida.

 

 if(isalpha(palav[i])){

        cout << palav[i] << endl;
        system("pause");

      for(i=0; i<=palav.size(); i++){
        if(isalnum(palav[i]) or palav[i] == '_'){
            achou = true;
        }else{
          achou = false;
          resp = palav[i];
          break;
        }
      }
    }

    if(achou == true){
        cout << "A sua entrada foi permitida";
    }else{
      cout << "entrada invalida" << endl << "O caractere não permitido e" << resp;
    }

Acredito que ele não ta entrando no If que esta dentro do for ou esta entrando direto no else e parando o for.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Mr-86    poste seu código Atual ,  e um parecido , seria esse :

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
  int i=0, n;
  char resp;
  bool achou = false;
  string palav = "";
  do
  {
    cout << "Digite uma palavra " << endl;
    getline(cin, palav);
  }while(palav == "");                 /// igual a vazio
  if( isalpha( palav[i] )/* == true*/) /// checa se eh letra
  { 
    cout << palav[i] << " Eh  Uma Letra !" << endl;
    for(i=0; i<palav.size(); i++)      /// vetor comeCa em zero
    {
      if(isalnum(palav[i]) /*== true*/ /// checa se eh letra ou dIgito numErico
         or palav[i] == '_' )          /// ou eh caractere special underline
      {
        achou = true;
      }
      else
      {
        achou = false;
        resp = palav[i];
        break;
      }
    }
  }
  if(achou == true)
  {
    cout << "A sua entrada foi permitida";
  }
  else
  {
    cout << "entrada invalida";
  }
  return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!