2014-06-28 10 views
5
#include <iostream> 
#include <string.h> 
using namespace std; 

int main() 
{ 
    string st = "Hello world"; 
    return 0; 
} 

eprogramma C++ dà un errore di run-time quando le stringhe vengono utilizzate

#include <string> 
int main() 
{ 
    std::string st = "Hello world"; 
    return 0; 
} 

ho provato la compilazione di questo codice usando MinGW compilatore su NetBeans. Viene visualizzato il seguente errore dopo la compilazione riuscita.

RUN FALLITA (valore di uscita -1.073,741511 millions, tempo totale: 93ms)

Ma funziona pulito quando le stringhe non vengono utilizzati. Mi piacerebbe sapere cosa sto facendo male qui. Grazie in anticipo.

+1

versione Quale di mingw stai usando? –

+2

'std :: string' è dichiarato in' ', non' '- questo aiuto? (Anche se così non fosse, dovresti cambiare questo) –

+0

Io uso 4.8.1 Ho provato ma non funziona allo stesso modo lo stesso errore – Dinal24

risposta

1

Usare C++ stringhe e non utilizzare using namespace std:

#include <string> //c++ string header 

int main() 
{ 
    std::string st = "Hello world"; 
    return 0; 
} 

#include <string.h> è la vecchia intestazione stringa in stile C e molto probabilmente non è quello che si desidera utilizzare qui. Vedere questa domanda per maggiori dettagli: Difference between <string> and <string.h>?

Nota: Se si voleva davvero le vecchie stringhe in stile C allora davvero dovrebbe utilizzare #include <cstring> perché questo metterà le funzioni nella std spazio dei nomi e non causerà alcun inquinamento dello spazio dei nomi che può portare ad altri risultati indesiderati.

Probabilmente quello che è successo è che hai usato la vecchia intestazione della stringa di stile e non hai inizializzato correttamente quelle stringhe. Le vecchie stringhe in stile C non hanno un costruttore e un operatore = definito come la classe std::string.

Modifica: dopo aver consultato il forum Netbeans questo è un problema con Netbeans e non un problema C++. Prova a cambiare l'output su un terminale esterno in Netbeans. Oppure esegui il programma direttamente dalla riga di comando. Se questi approcci non risolvono il problema o non sono desiderabili, fai un post sul forum Netbeans. Anche dare un'occhiata a questa domanda: Program won't run in NetBeans, but runs on the command line!

+0

Ho ancora lo stesso errore, ho provato a stampare float, interi e cout << "Hello world" funziona bene ma string str = "Hello world"; dà un errore – Dinal24

+0

@ user3248168 il codice che ho postato qui produce lo stesso valore di errore quando usato verbatim? – shuttle87

+0

sì, sì! RUN FAILED (valore di uscita -1.073.741.511, tempo totale: 88 ms) – Dinal24

0

Uss #include <string> invece di string.h

+0

Ho provato ma non funziona altrettanto bene!Ottengo lo stesso errore – Dinal24

+0

usando anche std :: string invece del namespace? –

+0

sì continua a dare lo stesso errore. – Dinal24

Problemi correlati