Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

0 element stringa

Ostatnio zmodyfikowano 2014-11-28 09:38
Autor Wiadomość
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...
C/C++
//bufor.at(0) też podobny efekt.
if( bufor[ 0 ] == 'A' )
...
program w trakcie działania wysypuje się. Co robić? Nigdy z tym się nie spotkałem...
P-121524
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.
C/C++
if( strncmp( bufor.c_str(), "A", 1 ) == 0 )
...
P-121528
Monika90
» 2014-11-27 09:35:14
Jeżeli program wysypuje się w linii
C/C++
if( bufor[ 0 ] == 'A' )
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?
P-121533
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ń

P-121536
michal11
» 2014-11-27 15:08:29
A czy porównywany string nie powinien być w "" a nie w '' ?
P-121544
darko202
» 2014-11-28 07:48:07
'a' - to typ char
"a" - to typ string
P-121606
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 *
P-121607
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
P-121608
« 1 »
  Strona 1 z 1