Funkcja scanf() a string
Ostatnio zmodyfikowano 2011-12-30 16:57
kasprus Temat założony przez niniejszego użytkownika |
Funkcja scanf() a string » 2011-12-29 21:47:39 Witam, mój problem polega na tym, że nie za bardzo wiem, jak wczytać string-a przez funkcję scanf(). |
|
pekfos |
» 2011-12-29 21:57:44 std::string? omg, tak sie nie da.. |
|
szyx_yankez |
» 2011-12-29 22:54:32 @Up
Jak to nie?
std::string Str; scanf( "%s",( char * ) Str.c_str() ); printf( "%s", Str.c_str() );
|
|
ison |
» 2011-12-29 23:24:06 @up nie, tak nie można, niestety zobacz co Ci wypisze std::string Str; scanf( "%s", Str.c_str() ); printf( "%lu\n", Str.size() );
to, że Ci to działa to przypadek co więcej zobacz co się stanie po printf( "%s\n",( Str + "aaa" ).c_str() );
|
|
szyx_yankez |
» 2011-12-29 23:32:45 @Up
Może i racja:D
Ale zawsze można zrobić tak:
char T[ 100 ]; scanf( "%s", T ); std::string Str = T; |
|
ison |
» 2011-12-29 23:45:23 @up ładny buffer overflow :P |
|
pekfos |
» 2011-12-30 16:37:29 Najlepiej użyć cin, getline, lub coś innego. Nie zawsze mieszanie bibliotek standardowych C i C++ ma sens. |
|
Mrovqa |
» 2011-12-30 16:57:27 Tak jak przedmówca mówił - użyj funkcji ze standardu C++. @szyx_yankez ten Twój pomysł ze stringiem nie jest najlepszy, ale skuteczny. Musisz tylko zarezerwować pamięć i działa ładnie :) std::string Str( lenght, '\0' );
Nie wiem jak w C::B działa, ale w VC++ 2010 działa dobrze. W MTC schrzaniłem pisząc algorytmy na std::string :/ Znalazłem sposób (nie najszybszy, ale zawsze o trochę szybszy) - const_cast < char * >( string.c_str() ); . |
|
« 1 » |