INDIVIDUARE UN CARATTERE IN UNA STRINGA [C++]

di il
3 risposte

INDIVIDUARE UN CARATTERE IN UNA STRINGA [C++]

Ciao a tutti,
sto eseguendo svairati esercizi ma continuo a trovare difficoltà sul confronto tra stringe e sulla individuazione di caratteri specifici all'interno di esse.
In particolare, per una richiesta collaterale del problema che sto affrontando, ho la necessità di individuare tutti i segni "+" all'interno di una stringa che viene inserita in input.
string Sum;
string Sup;

int main()
{
	cin >> Sum;

	for (int i = 0; i < Sum.length(); i++)
	{
		if (Sum[i]!= "+")
		{
			Sup[i] = Sum[i];
		}

		cout << Sup[i];
	}
	
Però il compilatore mi dice che l'operazione "!=" non è valida in sintesi. Ma io sto confrontando un char, che è il simbolo "+" con un altro char, che è il valore della stringa in posizione i-esima. Sbaglio perchè il confronto tra stringhe (char) non si esegue in questo modo e devo usare funzioni come strcmp?

Grazie in anticipo

3 Risposte

  • Re: INDIVIDUARE UN CARATTERE IN UNA STRINGA [C++]

    '+' è il carattere. "+" è una stringa
  • Re: INDIVIDUARE UN CARATTERE IN UNA STRINGA [C++]

    Weierstrass ha scritto:


    '+' è il carattere. "+" è una stringa
    Ho corretto, però ho dovuto cambiare il codice in questo modo
    char Sum[100];
    char Sup[100];
    
    
    int main()
    {
    	cin >> Sum;
    
    	for (int i = 0; i < 100; i++)
    	{
    		if (Sum[i]!= '+')
    		{
    			Sup[i] = Sum[i];
    		}
    
    		cout << Sup[i];
    	}
    Poichè con il tipo string mi dava errore: questo succede perchè quando copio il primo valore nella stringa Sup questa viene definita già di grandezza 1 e quindi dopo al valore i+1 non accetta altri dati giusto?
  • Re: INDIVIDUARE UN CARATTERE IN UNA STRINGA [C++]

    Io farei così se vuoi eliminare i +
    
    #include <iostream>
    #include <string>
    using namespace std;
    string Sum, Sup;
    int main(){
        cin >> Sum;
        for (char i: Sum)
            if (i != '+')
                   Sup += i;
        cout << Sup;
        return 0;
    }
    
Devi accedere o registrarti per scrivere nel forum
3 risposte