View Full Version : Dichiarare una stringa che contiene " in c++
ciao a tutti ho un problema stupidissimo in c++
devo dichiarare una stringa che contiene virgolette, solo che quando vado a compilare giustamente g++ mi vede il nome della stringa come se finisse con la seconda " e quindi mi da errore
per farvi capire, se devo fare una stringa del genere
string pippo = "ciao "scemo""
mi da errore ovviamente... la stessa cosa se faccio
if(string == "ciao "scemo"")
come faccio a risolvere questo piccolo inconveniente?
grazie in anticipo per le risposte :D
ilsensine
31-07-2007, 17:19
\"
scusate il doppio post...
e se volessi invece porre una stringa come il risultato di una funzione system() come dovrei fare? :D
ilsensine
31-07-2007, 18:00
Il risultato di una system è un int, non una stringa.
Il risultato di una system è un int, non una stringa.
ma se il system che voglio fare è un cat che trova del testo non posso in qualche modo ottenerlo e metterlo in una stringa? :stordita:
oppure devo per forza aprire il file con le funzioni nella libreria fstream?
ma se il system che voglio fare è un cat che trova del testo non posso in qualche modo ottenerlo e metterlo in una stringa? :stordita: Per farlo ... tecnicamente è possibile. Se si è su Windows basta usare opportunamente CreateProcess specificando degli appositi handle di input/output.
C'è anche un articolo della MS: http://support.microsoft.com/kb/190351/en-us
Per farlo ... tecnicamente è possibile. Se si è su Windows basta usare opportunamente CreateProcess specificando degli appositi handle di input/output.
C'è anche un articolo della MS: http://support.microsoft.com/kb/190351/en-us la shell di Windows però non ha il comando cat :Prrr:
per Linux invece dipende se il comando cat è implementato come eseguibile o come comando built-in di bash: nel primo caso basta forkare, rimpiazzare gli standard streams con il file descriptor di una pipe (vedere dup2), e lanciare cat; normale routine di reindirizzamento degli standard streams insomma. nel secondo caso invece mi sa che bisogna forkare, reindirizzare gli streams, lanciare bash, inviare "cat\n" sulla pipe, e leggere l'output sempre dalla pipe. da notare che (credo) il secondo sistema funzioni in entrambi i casi :p
Se invece cerchi una soluzione semplice e semplicistica:
system("cat xyz > /tmp/uw8e729e9quue9");
e dopo ti leggi l'output prendendo dal file temporaneo.
ilsensine
01-08-2007, 09:35
ma se il system che voglio fare è un cat che trova del testo non posso in qualche modo ottenerlo e metterlo in una stringa? :stordita:
Usa la soluzione di Cionci, oppure popen (se devi solo leggere o scrivere dati interattivamente con il programma invocato), oppure (per un controllo più completo) direttamente fork+exec+il reindirizzamento di stdin/out/err su descrittori del tuo programma.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.