• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Funzione replace in C++

gedamial

Utente Senior
Autore del topic
9 Giugno 2010
1.937
69
Miglior risposta
0
Salve.

Mi occorre una funzione in C++ che sostituisca, ad esempio in una stringa, tutte le A con #, tutte le B con *
Inoltre, necessito anche di quella funzione per trasformare tutta la stringa in minuscolo (il famoso TOLOWER CASE). Anche quest'ultimo non l'ho trovato :|
Ho già visto su internet e non ho trovato nulla... nulla che funzionasse almeno.

Grazie in anticipo!
 
Esiste la funzione tolower() che puoi usare includendo l'header <string>, ed esiste anche la funzione replace(), che puoi vedere cliccando qui:
Perfavore, Entra oppure Registrati per vedere i Link!
 
  • Like
Reactions: 1 person
Salve.

Mi occorre una funzione in C++ che sostituisca, ad esempio in una stringa, tutte le A con #, tutte le B con *
Inoltre, necessito anche di quella funzione per trasformare tutta la stringa in minuscolo (il famoso TOLOWER CASE). Anche quest'ultimo non l'ho trovato :|
Ho già visto su internet e non ho trovato nulla... nulla che funzionasse almeno.

Grazie in anticipo!

dato che devi controllare solo due lettere , usare replace non serve. Quindi basta scorrere la stringa controllare se l'n elemento è uguale a A o B e sostituirlo.

Invece nel secondo caso conviene usare la funzione trasform , dovrai includere le seguenti librerie però
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

la chiamata di trasform

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

puoi anche usare tolower se vuoi ma dovrai scorrere tutta la stringa , io preferisco questa versione.
 
  • Like
Reactions: 1 person
Nada. Avevo già visitato quel sito. Guarda:
Perfavore, Entra oppure Registrati per vedere i Link!


Escludendo il tolower(), con il replace ho già tentato così

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

e... manco i cani :|


EDIT FOR @TBH

Non devo controllare solo due lettere, ma tutte quelle dell'alfabeto :emoji_relieved:


EDIT: PROBLEMA RISOLTO!

Usando il replace, come input inserivo (a) al posto di (A) ed è ovvio che non me lo sostituiva :emoji_relieved:


EDIT: No, aspettate!

La funzione replace mi converte solo le parole, non le frasi. In pratica se scrivo "Ciao a tutti" di trasforma solo CIAO perché poi c'è lo spazio che divide CIAO da A.
Come risolvere? D:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Ultima modifica:
AHAHHAAHAHAH STO RIDENDO DAVVERO GIURO! AHHAHAHAHAHAHAHAHAH

Posso chiederti una cosa? In questo caso

#include <algorithm>
#include <functional>
#include <cctype>

come fai a sapere che sono header files e non librerie?

Allora mettetevi in testa che in C/C++ non potrete mai e poi mai includere delle librerie - quindi file con estensione .dll o .lib - come si fa in C# o in VB.NET. Solo perché non c'è l'estensione .h non vuol dire che non siano header file. La direttiva include serve per includere solo ed esclusivamente header file, che poi questi header file consentano di utilizzare le funzioni - API - di alcune librerie - .dll - quello è un altro discorso. Prendi per esempio l'API GetAsyncKeyState. In C/C++ la potrai utilizzare solo se includi l'header Windows.h, non devi includerla con - ad esempio - DllImport come si fa nel C#, né esiste una direttiva che ti faccia includere librerie. Ormai si suol dire "includo la libreria" solo perché l'inclusione di un header file permette di utilizzare una funzione presente in una libreria, è sbagliato, si include un header file non una libreria; se poi quest'ultimo richiama delle librerie quello è un altro discorso. In C/C++ non si possono includere librerie.
 
Ultima modifica: