Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [c++] sottostringa...

  1. #1

    [c++] sottostringa...

    ho una stringa A con all'interno "alb"
    poi ho una stringa B con all'interno "albero"

    come faccio a capire che la stringa B inizia con la stringa A?

  2. #2
    codice:
    const char *stringToScan = "albero";
    const char *stringToMatch = "alb";
    
    printf("%s %s contenuta in %s\n", stringToMatch, strstr(stringToScan, stringToMatch) ? "è" : "non è", stringToScan);

  3. #3
    la classe string delle STL ha una funzione membro find che fa proprio quello che chiedi.
    codice:
      string str ("albero");
      string str1 ("alb");
      size_t found;
    
      // ci sono differenti versioni, eccone una
      found = str.find(str1);
      if ( found != string::npos )
        cout << "prima occorrenza di \"alb\" è alla posizione : " << int(found) << endl;
    ciao
    sergio

  4. #4
    Originariamente inviato da menphisx
    codice:
    const char *stringToScan = "albero";
    const char *stringToMatch = "alb";
    
    printf("%s %s contenuta in %s\n", stringToMatch, strstr(stringToScan, stringToMatch) ? "è" : "non è", stringToScan);
    va bene ti ringrazio però devo capire se la stringa inizia uguale... non se c'è dentro alla parola a caso...

    cioè

    se digito avo

    deve cercarmi le parole che iniziano per avo

    non quelle che hanno dentro la parola avo.. tipo cavolo...

    capito?

  5. #5

  6. #6
    Originariamente inviato da DragonFire
    va bene ti ringrazio però devo capire se la stringa inizia uguale... non se c'è dentro alla parola a caso...

    cioè

    se digito avo

    deve cercarmi le parole che iniziano per avo

    non quelle che hanno dentro la parola avo.. tipo cavolo...

    capito?
    Prova così:
    codice:
    const char *stringToScan = "albero";
    const char *stringToMatch = "alb";
    
    printf("%s %s %s\n", stringToScan,
              strstr(stringToScan, stringToMatch) == stringToScan ? "inizia" : "non inizia",
              stringToMatch);

  7. #7
    codice:
    const char *stringToScan = "albero";
    const char *stringToMatch = "alb";
    if(strncmp(stringToScan,stringToMatch,strlen(stringToMatch))==0)
        cout<<stringToScan<<" inizia con "<<stringToMatch;
    else
        cout<<stringToScan<<" non inizia con "<<stringToMatch;
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Originariamente inviato da MItaly
    codice:
    const char *stringToScan = "albero";
    const char *stringToMatch = "alb";
    if(strncmp(stringToScan,stringToMatch,strlen(stringToMatch))==0)
        cout<<stringToScan<<" inizia con "<<stringToMatch;
    else
        cout<<stringToScan<<" non inizia con "<<stringToMatch;
    già

  9. #9
    Dimenticavo, con le string della STL:
    codice:
    string stringToScan ("albero");
    string stringTomatch ("alb");
    if(stringToScan.compare(stringToMatch,0,stringToMatch.length())==0)
        cout<<stringToScan<<" inizia con "<<stringToMatch;
    else
        cout<<stringToScan<<" non inizia con "<<stringToMatch;
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    grazie

    già che ci sono chiedo due cose..

    1)

    io vorrei che dopo aver scritto qualcosa.. cliccando invio mi parta un processo, cliccando invece ad esempio ctrl me ne parta un altro

    com'è possibile?

    2) è possibile far un printf di una stringa e far in modo che poi l'utente possa interagire su tale stringa... perchè se faccio printf("ciao"); poi l'utente si trova a schermo ciao.. ecco vorrei che se volesse potesse tornar indietro e cancellare ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.