Форум программистов, компьютерный форум CyberForum.ru

Преобразования строки в число - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Цыкл http://www.cyberforum.ru/cpp-beginners/thread249637.html
Данная последовательность целых чисел, за которой следует 0. Найти максимальный элемент в этой последовательности. Добавлено через 1 час 28 минут уже не нужно
C++ Присвоение типа Char нид хелп) итак, мне надо, чтобы прога проверяла, является ли переменная а равна значению a, b или c, а потом исполняла ряд команд. если пишу так: if (a="A"), пишет, мол error C2440: =: невозможно преобразовать "const char " в "char" а если так: http://www.cyberforum.ru/cpp-beginners/thread249636.html
Найдите ошибку в программе C++
Не могу исправить ошибку в функции (171-181 строка) все остальное работает #include <iostream> #include <cstdlib> #include <iomanip> #include <ctime> #include <fstream> using namespace std;
C++ вывод суммы прописью
как написать функцию которая выводит ссумму прописью, например ввожу 5643- выводит пять тысяч шестьсот сорок три рубля
C++ Warning C4996: 'strcpy': This function or variable may be unsafe http://www.cyberforum.ru/cpp-beginners/thread249629.html
написал программу все считает , но выводит ошибку окно как сделать отладку программы? Warning 1 warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\users\wild_flower\documents\visual studio 2010\projects\account\account\account.cpp 14 1 Account
C++ Напишите програму на С Написать программу, которая позволяет проверять существует данный "путь"в системе каталогов, если нет, то указывает где именно ошибка. подробнее

Показать сообщение отдельно
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
28.02.2011, 00:09     Преобразования строки в число
Если вас устроит sscanf:

C++
1
2
3
4
5
6
7
8
9
10
11
string str;
double result;
bool read;
 
do
{
   cout << "> ";
   getline( cin, str );
   read = sscanf( str.c_str(), "%d", &result );
}
while( !read );
Удачи.

Добавлено через 37 минут
Вот это если ручками:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
double StrToDouble( string::const_iterator beg, string::const_iterator end )
{       
    int secondPartLng = 0; //длина части после запятой
    double result = 0;     //финальное число
    string buffer;         //временный буфер
    string::const_iterator it = beg;
    
    //ищем разделитель целой и дробной части или конец фрагмента строки
    while( *it != '.' && *it != ',' && it != end )
       it++;
    
    copy( beg, it, back_inserter( buffer ) ); //копируем целую часть в буфер
    result = atoi( buffer.c_str() );          //и конвертируем её в число
    
    buffer.clear();     //очищаем буфер
    
    if( it != end )
       it++; //пропускаем разделитель
    else
       return result;
    
    //ищем конец дробной части (на случай наличия текста далее)
    string::const_iterator it2 = it;
    while( isdigit(*it2) && it2 != end )
       it2++;
    
    copy( it, it2, back_inserter( buffer ) ); // копируем дробную часть в буфер
    secondPartLng = buffer.length();          // запоминаем её длину
    
    // Расчёт:
    result += float( atoi( buffer.c_str() ) ) * ( 1 / pow( 10, secondPartLng ) );
    
    // Выполняется так:
    //  515.412
    //  412 (длина = 3)
    //  1 / 10^3 = 1/1000 = 0.001 // ^ - здесь оператор возведения в степень. В C++ этот оператор выполняет XOR - не путать!
    //  412 * 0.001 = 0.412
    //  515 + 0.412 = 515.412
    
    return result;
}
C++
1
2
3
string str;
getline( cin, str );
cout << setprecision(10) << StrToDouble( str.begin(), str.end() ) << endl;
Так же можно передать отдельный участок строки, если соответствующим образом установить итераторы.

P.S. Вы писали:
C++
1
double mstold(string m)
Я бы не рекомендовал передавать строку целиком, такие вещи лучше передавать по ссылке:
C++
1
double mstold(string &m)
Если не нужно менять строку, передайте с модификатором const.

Удачи.
 
Текущее время: 04:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru