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

Предупреждение warning C4996: 'itoa' - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 52, средняя оценка - 4.85
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
10.01.2012, 00:39     Предупреждение warning C4996: 'itoa' #1
Здравствуйте, подскажите что означает данное предупреждение и как его убрать
Предупреждение 1 warning C4996: 'itoa': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _itoa. See online help for details.
Таких предупреждений у меня 9)
Кусочек кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string LongLong_to_String (const LongLong &T)
{
    string A;
    int ostatok;
    char simvol[5];
    if ((T.first == 0) && (T.second == 0))
    {
        return "0";
    }
    for (int f = T.second; f != 0; f /= 10)
    {
        ostatok = f % 10;
        itoa (ostatok,simvol,10);
        A.push_back (simvol[0]);
    }
.....
....
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2012, 00:39     Предупреждение warning C4996: 'itoa'
Посмотрите здесь:

Warning C4996: 'strcpy': This function or variable may be unsafe C++
C++ itoa
C++ itoa();
C++ Предупреждение C4996. чито это?
C++ Не работает прога. error C4996: 'itoa'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.01.2012, 00:52     Предупреждение warning C4996: 'itoa' #2
Цитата Сообщение от fenix117 Посмотреть сообщение
что означает данное предупреждение
плоховато с английским? Устаревшая, юзай _itoa вместо нее.
Цитата Сообщение от fenix117 Посмотреть сообщение
и как его убрать
В тексте предупреждения сказано...
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
10.01.2012, 00:54     Предупреждение warning C4996: 'itoa' #3
fenix117, ну компилятор советует вам пользоваться _itoa вместо itoa так как он там что-то в POSIX'овском стандарте вычитал за вас и теперь вот вам решил порекомендовать

Добавлено через 51 секунду
Ну да вообще предупреждения для того и предупреждения чтобы Вы их могли прочитать и всё, предупреждения служат чтобы обратить ваше внимание, а не чтобы Вы обязательно исправили это.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
10.01.2012, 00:59     Предупреждение warning C4996: 'itoa' #4
это нестандартная функция (ровно как и _itoa)
используйте sprintf(simvol, "%d", ostatok)
конечно доступные системы исчисления только 8, 10, 16ные
Тэлия
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 7
26.05.2013, 00:10     Предупреждение warning C4996: 'itoa' #5
Цитата Сообщение от alex_x_x Посмотреть сообщение
это нестандартная функция (ровно как и _itoa)
используйте sprintf(simvol, "%d", ostatok)
конечно доступные системы исчисления только 8, 10, 16ные
у меня не сработало ни _itoa, ни sprintf...на _itoa выдавала длинный список ошибок, а с спринтф работа не задалась - подчеркивало.

как еще можно?
может быть кто еще поможет?
мне нужно из трех переменных (char,int,int) сделать одну типа string.
Хотела перевести инт в чар и склеить, но перевести не получилось О_О
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
26.05.2013, 00:15     Предупреждение warning C4996: 'itoa' #6
Тэлия, примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <sstream>
#include <string>
 
// ...
 
int main() {
   char ch = 'c';
   int one = 1;
   int two = 2;
 
   std::ostringstream oss;
   oss << ch << one << two;
   std::string string = oss.str();
 
   std::cout << string << std::endl;
}
Тэлия
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 7
26.05.2013, 18:03     Предупреждение warning C4996: 'itoa' #7
Цитата Сообщение от gray_fox Посмотреть сообщение
Тэлия, примерно так:
C++
1
2
3
4
5
6
   std::ostringstream oss;
   oss << ch << one << two;
   std::string string = oss.str();
 
 
}
Спасибо большое, работает...
а можете объяснить, что оно делает?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
26.05.2013, 20:20     Предупреждение warning C4996: 'itoa' #8
православный вариант с бустом мне больше нравится:

C++
1
std::string str = boost::format ("%d") % 10;
Тэлия
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 7
27.05.2013, 00:37     Предупреждение warning C4996: 'itoa' #9
alex_x_x, а он что делает??
Arkanit
 Аватар для Arkanit
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 33
Завершенные тесты: 1
19.05.2016, 12:10     Предупреждение warning C4996: 'itoa' #10
Была та же ошибка

заменил itoa на _itoa_s - проблема решена.
Mirmik
 Аватар для Mirmik
106 / 78 / 21
Регистрация: 27.02.2014
Сообщений: 432
19.05.2016, 12:26     Предупреждение warning C4996: 'itoa' #11
В чем функциональная разница между itoa и _itoa?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
19.05.2016, 14:35     Предупреждение warning C4996: 'itoa' #12
Цитата Сообщение от Mirmik Посмотреть сообщение
В чем функциональная разница между itoa и _itoa?
Ни в чем. Разница во внутренней реализации этих функций. В первой может быть вообще что угодно, а во второй что угодно от майкрософт.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2016, 18:44     Предупреждение warning C4996: 'itoa'
Еще ссылки по теме:

C++ Предупреждение 2 warning LNK4075: не учитывается "/INCREMENTAL"
C++ Ошибка C4996
C++ Warning C4101 и warning C4996

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
 Аватар для Mr.X
2799 / 1575 / 246
Регистрация: 03.05.2010
Сообщений: 3,656
19.05.2016, 18:44     Предупреждение warning C4996: 'itoa' #13
Не, самый православный вот такой вариант:
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
#include <iostream>
#include <string>
///////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    char    c{};
    int     i{};
    int     k{};
 
    std::cout   <<  "char\t: ";
    std::cin    >>  c;
 
    std::cout   <<  "int\t: ";
    std::cin    >>  i;
 
    std::cout   <<  "int\t: ";
    std::cin    >>  k;
 
    T_str   s   =       c
                    +   std::to_string(i)
                    +   std::to_string(k);
 
    std::cout   <<  s
                <<  std::endl;
}
Yandex
Объявления
19.05.2016, 18:44     Предупреждение warning C4996: 'itoa'
Ответ Создать тему
Опции темы

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