Zamiana STRING na UNSIGNED CHAR * i odwrotnie
Ostatnio zmodyfikowano 2018-01-22 00:09
155178 Temat założony przez niniejszego użytkownika |
Zamiana STRING na UNSIGNED CHAR * i odwrotnie » 2018-01-21 12:53:00 Witam. Posiadam coś takiego : cout << endl << endl << "Podaj wiadomosc : "; string message; cin >> message; W jaki sposób zamienić string message na unsigned char*, a następnie z powrotem na string? Załóżmy, że tworzę zmienną unsigned char * test; i chcę do niej przypisać mojego stringa message, następnie zmieniam coś w *test i chcę wynik zapisać do string res; |
|
YooSy |
» 2018-01-21 13:22:26 Podaj przykłady danych wejściowych i wyjściowych.
|
|
155178 Temat założony przez niniejszego użytkownika |
» 2018-01-21 13:41:05 Wejściowe np. "WITAM". Dalej chcę skorzystać z algorytmu djb2 unsigned long hash( unsigned char * str ) { unsigned long hash = 5381; int c; while( c = * str++ ) hash =(( hash << 5 ) + hash ) + c; return hash; }
, ale wprowadzane dane muszę mieć w postaci unsigned char*. Wyjściowe mogę zapisać do unsigned long, ale z ciekawości chciałbym dowiedzieć się jak zamienić unsigned char* na string. |
|
mateczek |
» 2018-01-21 14:24:51 sobie przerób fuknkcje #include<string> #include<iostream> unsigned long hash( std::string str ) { unsigned long _hash = 5381; for( unsigned char znak: str ) _hash =(( _hash << 5 ) + _hash ) + znak; return _hash; }
int main() { std::string s = "witam"; std::cout << hash( s ); } |
|
155178 Temat założony przez niniejszego użytkownika |
» 2018-01-21 15:01:43 Błedy w powyższej funkcji : In function `long unsigned int hash(std::string)': 494 expected primary-expression before "unsigned" 494 expected `;' before "unsigned" 497 expected primary-expression before "return" 497 expected `;' before "return" 497 expected primary-expression before "return" 497 expected `)' before "return" |
|
mateczek |
» 2018-01-21 15:53:29 wklej kod z błędem!!! ten który ja wkleiłem się kompiluje i uruchamia https://ideone.com/jMHhfM może włącz sobie c++11 w swoim IDE. Lub jeśli masz jakiś zabytkowy kompilator to zamień for(element:tablica) na klasyczny for(int i=0;i<tablica.size();i++) #include<string> #include<iostream> unsigned long hash( std::string str ) { unsigned long _hash = 5381; for( int i = 0; i < str.size(); i++ ) { unsigned char znak = str[ i ]; _hash =(( _hash << 5 ) + _hash ) + znak; } return _hash; }
int main() { std::string s = "witam"; std::cout << hash( s ); }
|
|
Monika90 |
» 2018-01-21 19:49:27 z ciekawości chciałbym dowiedzieć się jak zamienić unsigned char* na string.
|
const int n = 5; unsigned char bytes[ n ] = { 0x45, 0x56, 0x67, 0x78, 0x89 }; std::string str( bytes, bytes + n );
|
|
155178 Temat założony przez niniejszego użytkownika |
» 2018-01-22 00:09:02 Dziękuję Wam za pomoc. Rzeczywiście korzystam z zabytkowego kompilatora, zamiana na klasyczny for pomogła. |
|
« 1 » |