Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как преобразовать число в строку??


Автор: Achillius 14.6.2006, 10:58
Скажите, плиз, как преобразовать число в строку?? Числа типа double и float. И ешё... Почему у меня не читается строка, записанная в файл??
Я пишу:


cf.Write(&str, sizeof(str));

Переменная str имеет ограниченную длину в 100 символов и принадлежит EditBox.
Потом пишу

cf.Read(&str, sizeof(str));
UpdateData(FALSE);

И ничего не происходит, т.е. в боксе ничего не выводится. Все переменные типа double, float записываются и читаются так корректно, а эта нет. Куда бежать??

 

Автор: smartov 14.6.2006, 11:10
Цитата(Achillius @  14.6.2006,  09:58 Найти цитируемый пост)
Скажите, плиз, как преобразовать число в строку??

http://www.mkssoftware.com/docs/man3/itoa.3.asp 

Автор: Daevaorn 14.6.2006, 11:31
Код

template< typename T >
std::string toString( T number )
{
    std::strstream stream;
    stream << number;
    std::string result;
    stream >> result;
    if( !stream.eof() )
        throw std::string( "bad number" );
    return result;
}

Знающие люди сразу увидят плагиатsmile  

Автор: Achillius 14.6.2006, 13:01
Daevaorn, а можно пояснения к твоему коду?? Я в нем ровным счётом ничего не понял. или хотя бы пример использования.

Добавлено @ 13:02 
Кстати, itoa() мне не подходит, т.к. числа не целые. 

Автор: Daevaorn 14.6.2006, 13:08
Цитата(Achillius @  14.6.2006,  14:01 Найти цитируемый пост)
Daevaorn, а можно пояснения к твоему коду?? 

Ок. Использовать так:
Код

#include <string>
#include <strstream>

template< typename T >
std::string toString( T number )
{
//...
}

void foo()
{
   std::string number_as_string1;
   number_as_string1 = toString<int>( 12345 );

   std::string number_as_string2;
   number_as_string2 = toString<float>( 12,345f );
}
 

Автор: sergejzr 14.6.2006, 13:24
Achillius, http://unixhelp.ed.ac.uk/CGI/man-cgi?atof+3, http://unixhelp.ed.ac.uk/CGI/man-cgi?strtod+3 

Автор: Xenon 14.6.2006, 16:01
А если так?
Код

cf.Write(reinterpret_cast<char*>(&str), sizeof(str));

Код

cf.Read(reinterpret_cast<char*>(&str), sizeof(str));
 

Автор: smartov 14.6.2006, 16:03
sergej.z
Цитата(sergej.z @  14.6.2006,  12:24 Найти цитируемый пост)
atof, strtod 

Так ему наоборот надо.


Achillius
1) http://www.thinkage.ca/english/gcos/expl/c/lib/sprint.html фунцию знаешь?
2) Вон там в самом верху есть ссылка на Vingrad FAQ. Выделенная зеленым бэграундом чтобы не пропустить.
Там есть специательная тема http://worldcpp.vingrad.ru/beginners/zgrt179.php
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)