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

перевод строки в число, определить делится ли оно на 4 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить знгачение выражения при заданных условиях. http://www.cyberforum.ru/cpp-beginners/thread902561.html
Не могу справиться с задачкой, помогите пожалуйста :)
C++ Как убрать искажения в raycasting алгоритме при обзоре по OY Доброго времени суток. Пишу 2.5D игру , где видимость трехмерного пространства создается с помощью алгоритма raycasting (на нем работает Doom , Doom II , Duke Nuknem 3D , Hexen). Вопрос такой : можно сделать нормальный обзор по оси OY , что бы не было искажения объектов (например когда в Hexen так делаешь , то объекты выгягиваются к верху а снизу сужаются)? Я делаю игру без движка , знаю что... http://www.cyberforum.ru/cpp-beginners/thread902560.html
C++ Структура "Банковский кредит"
Структура «Банковский кредит» с полями "ФИО клиента", "сумма", "срок", "процент". Бизнес-функция: вывод суммы, которую ежемесячно должен выплачивать клиент.
C++ Анализ
Помогите пожалуйста написать анализ по программе для ргр. По введенному номеру музыкальной ноты вывести ее словесное наименование. Например, 3 – ми. class Note { static const char* note; public: static const char* GetNote(int idx) { return (idx <= 8) ? note : ""; }
C++ Как модернизировать функцию rand, что бы числа генерировались на заданом промежутке от a до b ? http://www.cyberforum.ru/cpp-beginners/thread902527.html
Как модернизировать функцию rand, что бы числа генерировались на заданом промежутке от a до b ?
C++ Некоторые программы, которые сама написала Было у меня задание написать класс, в котором нужно перевести градусы в радианы. Прога ниже. #include<iostream> #include<conio.h> using namespace std; double pi=3.14159265; class gradus {double m; public:gradus(double a) {m=a;} friend double perevod(gradus ob); подробнее

Показать сообщение отдельно
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
16.06.2013, 13:31     перевод строки в число, определить делится ли оно на 4
В таком случае либо scanf или stringstream(с ними я думаю вы способны разобраться самостоятельно), либо strtol или stoi.
Как я уже и сказал, scanf и stringstream не позволяют определить какая именно ошибка произошла при конвертировании.
Ниже простой пример с использованием strtol(если ваш компилятор поддерживает С++11, лучше заменить str_to_int на std::stoi)
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
42
43
44
45
#include <cerrno>
#include <cstdlib>
#include <string>
#include <limits>
#include <stdexcept>
#include <iostream>
 
int str_to_int(const std::string& str)
{
    if(str.empty())
        throw std::invalid_argument("invalid argument");
 
    errno = 0;
    char* endptr = NULL;
    long int value = std::strtol(str.c_str(), &endptr, 10);
 
    // последние два условия на случай, если sizeof(int) != sizeof(long int)
    if(errno == ERANGE ||
       value < std::numeric_limits<int>::min() ||
       value > std::numeric_limits<int>::max())
    {
        throw std::out_of_range ("out of range");
    }
 
    if(*endptr != '\0')
        throw std::invalid_argument("invalid argument");
 
    return value;
}
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
 
    try
    {
        int value = str_to_int(str); 
        std::cout << value << std::endl;
    }
    catch(std::exception& e)
    {
        std::cerr << e.what() << '\n';
    }
}
 
Текущее время: 12:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru