Vercevales Temat założony przez niniejszego użytkownika |
Porównanie dwóch zmiennych string. » 2011-02-07 17:29:02 Mam zadanie, w którym pobrane z pliku słowo trzeba sprawdzić czy nie jest palindromem (od przodu jest takie samo jak od tyłu, np "kajak"). Z odwracaniem sobie poradziłem, z pomocą przyszedł Wujek Google. Ale porównać nie mogę, próbowałem już strcmp, compare, oraz zwykłe porównanie i nic. #include <iostream> #include <fstream> #include <algorithm> #include <string> #include <cstring> #include <string.h>
int main() { std::fstream dane; std::fstream zadanie4; dane.open( "/home/karol/Pobrane/Matura informatyka/Dane_PP/dane.txt", std::ios::in ); zadanie4.open( "/home/karol/Pobrane/Matura informatyka/Dane_PP/zadanie4.txt", std::ios::out ); std::string poprawna; std::string odwrotna; while( dane.eof() != true ) { getline( dane, poprawna ); std::cout << poprawna << std::endl; odwrotna = poprawna; reverse( odwrotna.begin(), odwrotna.end() ); std::cout << odwrotna << std::endl; if( poprawna == odwrotna ) { std::cout << "tu byłem " << std::endl; zadanie4 << odwrotna; }; } dane.close(); zadanie4.close(); return 0; }
gdy w warunku dam if( strcmp( poprawna, odwrotna ) == false )
to wyskoczy error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const char*, const char*)’
z użyciem if( poprawna.compare( odwrotna ) == 1 )
zapisuje wszystkie w odwrotnej kolejności, a gdy dam if( poprawna.compare( odwrotna ) == 0 )
to nie zapisze niczego... Dlaczego? |
|
ison |
» 2011-02-07 17:48:51 if( strcmp( poprawna.c_str(), odwrotna.c_str() ) == false )
chociaż nie wiem po co Ci strcmp skoro dla std::string masz operator == |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-02-07 17:54:02 nie działa :( Nie zapisuje niczego, nie wyświetla też "tu byłem" czyli w ogóle nie wchodzi w pętlę |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-02-07 17:55:17 if( poprawna == odwrotna ) jeżeli o to chodzi, to nie działa |
|
ison |
» 2011-02-07 17:59:11 tak, nawet Twój pierwszy program, który podałeś jest poprawny jesteś pewien, że plik, który otwierasz istnieje? :) u mnie działa bez zarzutu |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-02-07 18:02:29 Pliki istnieją, i są otwierane, bo sprawdziłem zadanie4.good() i dane.good() a poza tym zapisy do nich się dokonują tylko nie tak jakbym chciał ;/ |
|
ison |
» 2011-02-07 18:03:52 chodzi o nową linię w pliku? zadanie4 << odwrotna << std::endl;
spróbuj wypisać zawartość pliku dane przed tym while'em out dla słowa kajak w pliku dane: kajak kajak tu by│em
|
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2011-02-07 18:09:21 Tam jest tysiąc (dosłownie) słów :O słowa zapisane linijka po linijce, gdy ja je zapisuję w zadanie4.txt to też się zapisują linijka po linijce. link: http://www.cke.edu.pl/images/stories/Arkusze_matura_09/informatyka/PP/Dane_pp.rar Te warianty też nie działają: std::string * wsk_pop = & poprawna; std::string * wsk_odw = & odwrotna;
if( wsk_pop == wsk_odw ) { std::cout << "tu byłem " << std::endl; zadanie4 << odwrotna; };
i ten: std::string * wsk_pop = & poprawna; std::string * wsk_odw = & odwrotna;
if( * wsk_pop == * wsk_odw ) { std::cout << "tu byłem " << std::endl; zadanie4 << odwrotna; };
|
|
« 1 » 2 3 4 |