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

Konwersja liczba <-> tekst

Ostatnio zmodyfikowano 2008-11-09 09:38
Autor Wiadomość
DejaVu
» 2008-11-08 21:03:46
C/C++
#include <sstream>
//...
std::stringstream zmienna;
zmienna << liczba;
zmienna.str().c_str();
P-2487
DejaVu
» 2008-11-08 21:39:16
C/C++
#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;
}
P-2490
DejaVu
» 2008-11-08 22:03:59
Trochę zupgrade'owałem Twój pomysł:
C/C++
#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;
}
P-2491
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?
P-18616
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...
P-18617
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ś):
C/C++
template < class To, class From >
To lexical_cast( From src )
{
    To tmp;
    std::stringstream s;
    if( !(( s << src ) &&( s >> tmp ) ) )
    {
        //tu wpisz kod który się wykona w razie niepowodzenia, np. rzuć jakiś wyjątek
    }
    return tmp;
}
P-18618
manfred
Temat założony przez niniejszego użytkownika
» 2008-11-09 09:38:50
Ja tam zostanę przy swoim:
C/C++
#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;
}
P-18619
« 1 »
  Strona 1 z 1