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

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

iC++ Program daje błąd w czasie, gdy struny są wykorzystywane

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

próbowałem kompilacji tego kodu przy użyciu kompilatora MinGW na NetBeans. Pojawia się następujący błąd po pomyślnej kompilacji.

RUN FAILED (wartość wyjście -1073741511, łączny czas: 93ms)

Ale to działa czysty gdy struny nie są używane. Chciałbym wiedzieć, co robię źle tutaj. Z góry dziękuję.

+1

Wich wersja MinGW używasz? –

+2

'std :: string' jest zadeklarowane w' ', a nie' '- czy to pomaga? (Nawet jeśli tak nie jest, powinieneś to zmienić) –

+0

Używam 4.8.1 Próbowałem , ale to nie działa tak samo jak ten sam błąd – Dinal24

Odpowiedz

1

używać C++ ciągi i nie używać using namespace std:

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

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

#include <string.h> jest stary nagłówek ciąg C-styl i najprawdopodobniej nie jest to, co chcesz użyć tutaj. Patrz na to pytanie po więcej szczegółów: Difference between <string> and <string.h>?

Uwaga: Jeśli naprawdę chciał starych ciągów C stylu to naprawdę należy używać #include <cstring> bo to będzie umieścić te funkcje w obszarze nazw std i nie powoduje żadnych zanieczyszczeń, które namespace może prowadzić do innych niepożądanych skutków.

Prawdopodobnie doszło do tego, że użyłeś nagłówka starego stylu i nie zainicjował poprawnie tych ciągów. Stare łańcuchy w stylu C nie mają zdefiniowanego konstruktora i operatora =, jak klasa std::string.

Edycja: Po przejrzeniu forum Netbeans jest to problem związany z Netbeans, a nie z C++. Spróbuj zmienić wyjście na zewnętrzny terminal w Netbeans. Lub uruchom program bezpośrednio z wiersza poleceń. Jeśli te podejścia nie rozwiążą problemu lub nie są pożądane, zrób post na forum Netbeans. Również spojrzeć na to pytanie: Program won't run in NetBeans, but runs on the command line!

+0

Nadal dostaję ten sam błąd, próbowałem drukować floats, ints i cout << "Hello world" działa dobrze, ale string str = "Hello world"; daje błąd – Dinal24

+0

@ user3248168 czy kod, który tu wysłałem, generuje tę samą wartość błędu, gdy jest używany dosłownie? – shuttle87

+0

tak, to robi! URUCHOMIONE URUCHOMIENIE (wartość wyjściowa -1,073,741,511, całkowity czas: 88 ms) – Dinal24

0

Uss #include <string> zamiast string.h

+0

Próbowałem , ale to nie działa tak dobrze!Otrzymuję ten sam błąd – Dinal24

+0

również używając std :: string zamiast przestrzeni nazw? –

+0

tak, nadal daje ten sam błąd. – Dinal24