Podział stringa na znaki (char)
Ostatnio zmodyfikowano 2019-05-30 21:06
kocotian.2805 Temat założony przez niniejszego użytkownika |
Podział stringa na znaki (char) » 2019-05-29 18:29:43 POMOCY! Szukam już pół godziny i za nic nie mogę znaleźć odpowiedzi na pytanie - Jak podzielić stringa (std::string) na znak (char) Miałoby to wyglądać w ten sposób, że ze stringa program miałby "wykrywać" znaki od początku. Buduję program z autorską biblioteką, więc funkcja "cnulls()" odpowiada za kolorowe bloki. string linia = "wwwllldlllwww*"; char znak; do { if( znak == 'w' ) cnulls( 1, 0xff ); if( znak == 'l' ) cnulls( 1, 0x77 ); if( znak == 'd' ) cnulls( 1, 0x88 ); if( znak == 'b' ) cnulls( 1, 0x00 ); } while( znak != '*' )
PS. To będzie gra, więc proszę o coś w miarę efektywnego ;) |
|
kocotian.2805 Temat założony przez niniejszego użytkownika |
NIe działa » 2019-05-29 19:05:23 Jednak nie działa, choc powinno :P ZOSTAWIAM KOD DLA POCZĄTKUJĄCYCH: #include "C:/BAGE/BAGE.h" using namespace std;
int main() { string s; s = "cpp0x"; for( int n; n > 90; n++ ) { if( s[ n ] == 'b' ) cnulls( 1, 0x00 ); if( s[ n ] == 'd' ) cnulls( 1, 0x88 ); if( s[ n ] == 'l' ) cnulls( 1, 0x77 ); if( s[ n ] == 'w' ) cnulls( 1, 0xff ); } }
|
|
Jacob99 |
» 2019-05-29 19:27:57 Masz błąd w pętli. Raczej nie chcesz iterować od 90 w górę. Jak chcesz iterować po stringu możesz użyć zakresowego for: for( auto item: string ) { if( item == 'b' ) } Ponadto lepiej używaj konstukcji else if(...) , będzie mniej sprawdzeń, czyli większa efektywność. PS. W dyrektywie #include nie używaj ścieżek bezwzględnych. |
|
pekfos |
» 2019-05-30 00:18:52 std::string str = "abcd";
for( size_t i = 0; i < str.size(); ++i ) std::cout << str[ i ] << ' ';
for( char c: str ) std::cout << c << ' '; |
|
kocotian.2805 Temat założony przez niniejszego użytkownika |
Nie działa :P » 2019-05-30 18:37:42 [Error] range-based 'for' loops are not allowed in C++98 mode |
|
pekfos |
» 2019-05-30 21:06:10 Więc użyj trybu C++11 lub nowszego. Albo drugiej wersji, z tych które podałem. |
|
« 1 » |