Konwersja liczba <-> tekst
Ostatnio zmodyfikowano 2008-11-09 09:38
DejaVu |
» 2008-11-08 21:03:46 #include <sstream>
std::stringstream zmienna; zmienna << liczba; zmienna.str().c_str();
|
|
DejaVu |
» 2008-11-08 21:39:16 #include <sstream> #include <iostream> #include <conio.h> int main() { std::stringstream ble; ble << "123.3"; float liczba; ble >> liczba; std::cout << liczba << std::endl; getch(); return 0; }
|
|
DejaVu |
» 2008-11-08 22:03:59 Trochę zupgrade'owałem Twój pomysł: #include <iostream> #include <sstream> #include <conio.h>
template < class ConvertFrom, class ConvertTo > bool lexical_cast( const ConvertFrom & f_from, ConvertTo & f_to ) { std::stringstream s; if( !( s << f_from && s >> f_to ) || !s.eof() ) return false; return true; }
int main() { float liczba; if( lexical_cast < std::string, float >( "123.3", liczba ) ) { std::cout << liczba << std::endl; } getch(); return 0; }
|
|
manfred Temat założony przez niniejszego użytkownika |
Konwersja liczba <-> tekst » 2008-11-08 20:04:32 Witam! Jak w C++ można przekonwertować liczbę (i int, i double) na std::basic_string<char, std::char_traits<char>, std::allocator<char> > i odwrotnie BEZ używania funkcji z języka C? |
|
manfred Temat założony przez niniejszego użytkownika |
» 2008-11-08 21:32:57 A na odwrót?? Najlepiej to prosiłbym o przykład funkcji która konwertuje w obydwie strony i dowolne typy... |
|
manfred Temat założony przez niniejszego użytkownika |
» 2008-11-08 21:50:02 Dobra, zrozumiałem. Tak na przyszłość, oto operator rzutowania czegokolwiek z ostream& operator<<(ostream&, coś) na cokolwiek z istream& operator>>(istream&, coś): template < class To, class From > To lexical_cast( From src ) { To tmp; std::stringstream s; if( !(( s << src ) &&( s >> tmp ) ) ) { } return tmp; } |
|
manfred Temat założony przez niniejszego użytkownika |
» 2008-11-09 09:38:50 Ja tam zostanę przy swoim: #include <iostream> #include <sstream> #include <typeinfo>
using namespace std;
template < typename To, typename From > To lexical_cast( From src ) { To tmp; stringstream s; if( !(( s << src ) &&( s >> tmp ) ) ) { throw bad_cast( "Bad lexical cast!" ); } return tmp; }
int main() { try { float liczba = lexical_cast < float >( "123.23" ); cout << liczba << endl; } catch( const bad_cast & err ) { cerr << err.what(); } getchar(); return 0; } |
|
« 1 » |