Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcja scanf() a string

Ostatnio zmodyfikowano 2011-12-30 16:57
Autor Wiadomość
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().
P-46653
pekfos
» 2011-12-29 21:57:44
std::string? omg, tak sie nie da..
P-46657
szyx_yankez
» 2011-12-29 22:54:32
@Up
Jak to nie?
C/C++
std::string Str;
scanf( "%s",( char * ) Str.c_str() );
printf( "%s", Str.c_str() );
P-46661
ison
» 2011-12-29 23:24:06
@up nie, tak nie można, niestety
zobacz co Ci wypisze
C/C++
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
C/C++
printf( "%s\n",( Str + "aaa" ).c_str() );
P-46664
szyx_yankez
» 2011-12-29 23:32:45
@Up
Może i racja:D
Ale zawsze można zrobić tak:
C/C++
char T[ 100 ];
scanf( "%s", T );
std::string Str = T;
P-46665
ison
» 2011-12-29 23:45:23
@up ładny buffer overflow :P
P-46667
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.
P-46686
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 :)
C/C++
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() );
.
P-46692
« 1 »
  Strona 1 z 1