char* do tablicy
Ostatnio zmodyfikowano 2011-06-30 12:58
CTRL85 Temat założony przez niniejszego użytkownika |
char* do tablicy » 2011-06-29 15:29:11 To forum już mi wiele razy pomogło, więc piszę z durnym problemem, ale ja jestem ślepy i nie widzę co jest źle ;) Mam taki kod (który działa): #include <iostream> using namespace std; int main() { char tekst[] = " "; string wyraz = "wyrazy:ktore:program:ma:podazielic"; for( int i = 0; i < wyraz.length(); i++ ) tekst[ i ] = wyraz[ i ]; char * schowek; char wyrazy[] = ""; cout << tekst << "\n" << endl; schowek = strtok( tekst, ":" ); while( schowek != NULL ) { cout << schowek << endl; schowek = strtok( NULL, ":" ); } system( "PAUSE" ); return 0; }
Chciałbym zapisać każdy wyraz w tablicy, ale wywala mi błędy zależy jak kombinuje :( Z góry dziękuję za pomoc CTRL85 |
|
DejaVu |
» 2011-06-29 15:45:57 Opcja 1. Poczytaj o dynamicznej alokacji pamięci.
Opcja 2. Poczytaj o kontenerze std::vector. |
|
CTRL85 Temat założony przez niniejszego użytkownika |
» 2011-06-29 16:43:54 A co lepsze i łatwiejsze? |
|
DejaVu |
» 2011-06-29 16:46:26 Lepsze jest to co rozumiesz na chwilę obecną. |
|
CTRL85 Temat założony przez niniejszego użytkownika |
» 2011-06-29 16:49:29 To na razie nic nie umiem z tego :) |
|
Mrowqa |
» 2011-06-29 16:59:20 char tekst[] = " "; string wyraz = "wyrazy:ktore:program:ma:podazielic"; for( int i = 0; i < wyraz.length(); i++ ) tekst[ i ] = wyraz[ i ];
Dalej nie sprawdzałem :P ( pomyśleć - tak banalny błąd :P ) Pozdrawiam, Mrowqa |
|
CTRL85 Temat założony przez niniejszego użytkownika |
» 2011-06-29 17:13:08 na swoje usprawiedliwienie dodam, że wcześniej miałem a:b, żeby zobaczyć, czy działa, a później, jak chciałem zoabczyć czy dobrze rozdziela większą liczbe wyrazów, to zapomniałem zmienić :P EDIT Zrobiłem coś takiego: #include <iostream> #include <vector> using namespace std; int main() { char tekst[] = " "; string wyraz = "wyrazy:ktore:program:ma:podazielic"; for( int i = 0; i < wyraz.length(); i++ ) tekst[ i ] = wyraz[ i ]; vector < char *> wszystkie_wyrazy; char * schowek; cout << tekst << "\n" << endl; schowek = strtok( tekst, ":" ); while( schowek != NULL ) { wszystkie_wyrazy.push_back( schowek ); schowek = strtok( NULL, ":" ); } for( int i = 0; i < wszystkie_wyrazy.size(); i++ ) cout << wszystkie_wyrazy[ i ] << endl; system( "PAUSE" ); return 0; }
|
|
ison |
» 2011-06-29 19:00:19 @up zauważ co zwróci strlen( wszystkie_wyrazy.back() );
po podzieleniu wyrazów // koniecznie chcesz w programie używać cstringów? (char*) ja bym to zrobił tak: #include <iostream> #include <vector> #include <string>
int main() { std::string wyrazy = "wyrazy:ktore:program:ma:podzielic"; std::vector < std::string > wyrazy_podzielone( 1 ); for( size_t i = 0; i < wyrazy.size(); ++i ) { if( wyrazy[ i ] == ':' ) wyrazy_podzielone.push_back( std::string() ); else wyrazy_podzielone.back() += wyrazy[ i ]; } for( size_t i = 0; i < wyrazy_podzielone.size(); ++i ) { std::cout << wyrazy_podzielone[ i ] << std::endl; } }
|
|
« 1 » 2 3 4 |