PDA

View Full Version : Dichiarare una stringa che contiene " in c++


-Slash
31-07-2007, 17:15
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
\"

-Slash
31-07-2007, 17:46
Grazie funziona :D

-Slash
31-07-2007, 17:56
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.

-Slash
31-07-2007, 18:13
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?

andbin
31-07-2007, 21:02
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

71104
31-07-2007, 23:42
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

cionci
01-08-2007, 08:58
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.