0 element stringa
Ostatnio zmodyfikowano 2014-11-28 09:38
Ehlert Temat założony przez niniejszego użytkownika |
0 element stringa » 2014-11-27 01:37:33 Witam, czytam (getline) linijki(imiona) z pliku tekstowego do zmiennej bufor typu string. Mam policzyć zaczynające się od 'A'. Problem w tym, że kiedy odwołam się do zerowego elementu stringa... if( bufor[ 0 ] == 'A' ) ...
program w trakcie działania wysypuje się. Co robić? Nigdy z tym się nie spotkałem... |
|
darko202 |
» 2014-11-27 08:21:00 sprawdź jak realizuje się porównywanie tekstów spójrz np. na http://cpp0x.pl/dokumentacja/standard-C/Porownywanie-tekstu/436 lub http://miroslawzelent.pl/kurs-c-plus-plus-lancuchy-napisy-string-char-ascii/ działać będzie np. if( strncmp( bufor.c_str(), "A", 1 ) == 0 ) ...
|
|
Monika90 |
» 2014-11-27 09:35:14 Jeżeli program wysypuje się w linii to znaczy, że string jest pusty. Przynajmniej tak było w starej wersji biblioteki standardowej. Sprawdź czy masz w pliku puste linie, a może nieprawidłowo wczytujesz linie tekstu? |
|
darko202 |
» 2014-11-27 10:50:11 Jeżeli używasz Visual Studio to błąd może wynikać z ustawień konfiguracyjnych
np. Project->Properties->General->Character Set przy Use Unicode Character Set pojawiają się błędy kompilacji w if( bufor[ 0 ] == 'A' )
przy Use Multi-Byte Character Set wszystko ładnie się kompiluje
czasami może także pojawić się problem przy różnych ustawieniach Project->Properties->General->Common language Runtime Supporte info na http://msdn.microsoft.com/en-us/library/k8d11d4s.aspx
lub ogólnie info na http://msdn.microsoft.com/pl-pl/library/669zx6zc.aspx
prawdopodobnie w innych kompilatorach są podobnie problemy wynikające z tych ustawień
|
|
michal11 |
» 2014-11-27 15:08:29 A czy porównywany string nie powinien być w "" a nie w '' ? |
|
darko202 |
» 2014-11-28 07:48:07 'a' - to typ char "a" - to typ string |
|
Jacob99 |
» 2014-11-28 08:13:15 @darko202 '' to pojedyńczy literał znakowy, a "" to łańcuch znaków. Jeśli sprawdzisz to 'a' jest typu const char , natomiast "a" jest typu const char * |
|
darko202 |
» 2014-11-28 09:38:56 >>A czy porównywany string nie powinien być w "" a nie w '' ?
na http://edu.pjwstk.edu.pl/wyklady/pro/scb/PRG2CPP_files/node117.html
Dla obiektów klasy string zdefiniowane jest działanie operatora przypisania. Na obiekt tej klasy można przypisywać zarówno inne napisy C++, jak i C-napisy oraz pojedyncze znaki. const char* cstr = "strin"; string s1, s2, s3, s(" C++"); s1 = cstr; s2 = 'g'; s3 = s; cout << s1 << s2 << s3 << endl;
>> '' to pojedyńczy literał znakowy, a "" to łańcuch znaków
Czym jest string ? patrzę na http://pl.wikibooks.org/wiki/C++/String "Strings are objects that represent sequences of characters." np. metoda c_str() Zwraca napis w stylu języka C (stały wskaźnik typu const char*).
na samym dole strony przedstawiono różnice jakie występują między C a C++ w obsłudze napisów. Po lewej zmienne a i b są typu (const char *), a po prawej - (std::string).
na np. http://cpp0x.pl/dokumentacja/Jezyk-C++/1049 metody działające na łańcuchach
|
|
« 1 » |