Newsgroup: it.comp.lang.c++
Titolo: Problemino con string

Ciao a tutti,
ho una variabile di tipo
std::string answer;
ma devo ritornare un char const *, quindi
return answer;
non funziona, il compilatore mi dice
Error:instrpool.cpp(366,17):Cannot convert
'std::basic_string<char,std::string_char_traits<char>,std::allocator<char>>'
to 'const char *'
Non è la prima volta che le string mi rompono, voi le usate?
E quando (es.) dovete usare getline(), come fate? Mettete in un buffer
di char const *?
Grazie, giulio
Per favore togliete "!RemoveMe!" dall'indirizzo per rispondere
Please remove "!RemoveMe!" from the address to reply

 di char const *?
Uso la funzione std::getline() che accetta direttamente una string.
EMG

:
answer.c_str();
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun/

di char const *?
Esiste una versione globale di getline:
getline(cin, answer);
Paolo
-----------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------

getline(cin, answer);
Ah, ecco.
Sentite, già che ci siamo, non capisco perché il seguente codice mi dà
un errore a runtime.
#include <iostream>
#include <string>
void main (void)
{
	string a;
}
Se invece inizializzo
string a("Stringa non vuota");
tutto ok.
E' normale o sbaglio qc io?
Grazie ancora, giulio


 E' normale o sbaglio qc io?
A parte il void main() da sostituire con int main() sembra tutto
regolare. Pare proprio un problema del tuo compilatore o della libreria.
EMG


 E' normale o sbaglio qc io?
Non e' normale.
	Mauro

>L'unico errore e' void main (main restituisce un int).
Ah. Corretto, ma non funziona lo stesso:
Sotto WinNT4 viene fuori la solita finestra che notifica una
violazione d'accesso:
Errore di applicazione.
L'istruzione 0x88787674576 ha fatto riferimento alla memoria a
0x6743523. La memoria non poteva essere "written".
Notare la perizia dei traduttori.
Uso Borland 5.0, purtroppo! Un vero schifo, pensate che adesso uso un
altro editor (emacs per NT), perché quello dell'IDE (che fa già pena
di suo) una volta mi ha segato un filesenza motivo (da 10kB a 2
byte!), figuratevi l'incazzatura.
Anche le STL sembrano avere gravi problemi.
Grazie, giulio


Anche le STL sembrano avere gravi problemi.
Effettivamente ci sono diverse cosucce che non vanno nel
poco che ho visto.


| L'unico errore e' void main (main restituisce un int).
|
| Mauro
Ciao, scusa se mi intrometto ma ho sempre usato void come ritorno del main
per, appunto, non avere un ritorno. Non capisco perché dici che è un errore...
Se scrivi int main presupponi che il main abbia come ritorno un intero e
quindi nell'ultima riga avrai un return x, con x intero: ma se a me non serve?
--
Ciao, ciao
E-mail: 
pi....@bigfoot.com
        (se 'rispondi al mittente', togli NO_SPAM)
HomePage: 
http://web.tiscalinet.it/pavelo
ICQ #37941259

quindi nell'ultima riga avrai un return x, con x intero: ma se a me non serve?
Lo richiede lo standard ed il valore di ritorno e` di solito utilizzato 
dai s.o. per conoscere la causa della terminazione di una applicazione.
Lo standard prevede anche che se non esplicitamente inserita, il 
compilatore metta una "return 0;" alla fine della main


 compilatore metta una "return 0;" alla fine della main
Aggiungo anche che esistono degli ambienti in cui una procedura che
ritorna qualcosa ed una che non ritorna niente vengono richiamate con
sequenze di istruzioni differenti.  Se chiami main() nel modo
sbagliato...  boom!
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it