Ciao a tutti!!!
Come avrete potuto intuire dal titolo, vorrei scrivere un programma che riceva una stringa in input e che copi i soli caratteri minuscoli di questa stringa in una seconda stringa. Vi posto subito il codice che ho scritto:
#include<iostream>
#include<string>
using namespace std;
int main(){
int j=0;
string s1,s2;
cout<<"Inserisci stringa: ";
getline(cin,s1);
for(int i=0;i<s1.length();i++){
if(islower(s1[i])){
s2[j]=s1[i];
j++;
}
}
cout<<"I caratteri minuscoli della stringa inserita sono: "<<s2;
return 0;
}
Il programma però non fa quel che dovrebbe. Prende la stringa s1 in input ma quando dovrebbe stampare la stringa s2 con i soli caratteri minuscoli non stampa nulla. Non credo che il problema sia nell'assegnazione s2[j]=s1
perchè se provo a stampare un singolo carattere di s2 (per esempio "cout<<s2[3]") mi stampa correttamente il carattere minuscolo che è stato copiato in quella posizione. Credo piuttosto che il problema sia a livello di "carattere di terminazione" o qualcosa del genere, ma potrei aver detto una cavolata. Intoltre stampando "cout<<s2.length()" mi da 0 quindi sicuramente c'è qualcosa che non torna. Potrei risolvere il problema in altri modi, per esempio stampando direttamente tutti i caratteri minuscoli di s1 senza copiarli in s2. Tuttavia vorrei sapere se e come è possibile far funzionare il codice che ho scritto copiando i caratteri minuscoli di s1 in s2.
Spero di essere stato abbastanza chiaro. Grazie in anticipo a tutti!!