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

std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
03.02.2013, 23:34     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #1
Как изменился синтаксис в Visual Studio 2012 данной строки? В VS 6.0 работает, в 2012 - нет.
Кто подскажет, где можно взять список изменений листинга в VS 2012 ???

C++
1
    word.copy ( charray, wlen, 0);
error C4996: 'std::basic_string<_Elem,_Traits,_Alloc>::copy': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
03.02.2013, 23:51     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #2
Цитата Сообщение от soa432 Посмотреть сообщение
Как изменился синтаксис в Visual Studio 2012 данной строки?
А не нужно баловаться с шаблонными проектами студии. Делайте пустые проекты.
Ну можно после
C++
1
#include "stdafx.h"
добавить
C++
1
#define _SCL_SECURE_NO_WARNINGS
для отключения ошибки(варнинга)
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 00:19  [ТС]     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #3
Цитата Сообщение от Croessmah Посмотреть сообщение
А не нужно баловаться с шаблонными проектами студии. Делайте пустые проекты.
Ну можно после
C++
1
#include "stdafx.h"
добавить
C++
1
#define _SCL_SECURE_NO_WARNINGS
для отключения ошибки(варнинга)
Я как понял в 2012 если делать пустой проект то там вручную все библиотеки добавлять в проект типа iostream, string или я ошибаюсь ?
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,064
04.02.2013, 00:23     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #4
Цитата Сообщение от soa432 Посмотреть сообщение
Я как понял в 2012 если делать пустой проект то там вручную все библиотеки добавлять в проект типа iostream, string или я ошибаюсь ?
и даже слово main придется вручную писать
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 00:24  [ТС]     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #5
Цитата Сообщение от ValeryS Посмотреть сообщение
и даже слово main придется вручную писать
та не, я просто когда пустой проєкт создавал, там мол конфликт был, что нету библиотек, и я так понял что в пустой - все самому добавлять
А прикреплять файлы iostream и т.д. к проекту не знаю как
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.02.2013, 00:31     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #6
они все есть. их нужно только в нужных h и cpp файлах писать. ничего сложного.
по поводу ошибки: странная вещь. вроде ворнинг и понятно из-за чего и как от него избавится. но выдается ошибка. в настройках проекта ворнинги случайно не интерпретируются как ошибки? если да, то можно попробовать такую опцию отключить хоть она и полезная.
Что у вас в Project->Properties->Configuration Properties->C/C++->Treat Warnings As Errors ?
Croessmah
04.02.2013, 00:39
  #7

Не по теме:

Ну да string из STL мы используем, а

Цитата Сообщение от soa432 Посмотреть сообщение
А прикреплять файлы iostream и т.д. к проекту не знаю как
жестоко, однако!

soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 00:43  [ТС]     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #8
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:

Ну да string из STL мы используем, а

жестоко, однако!

Спасибо, ваш комментарий мне очень помог.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
04.02.2013, 00:45     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #9
Цитата Сообщение от soa432 Посмотреть сообщение
Спасибо, ваш комментарий мне очень помог.
Меня еще интересует, а как Вы string используете? В проекте VS2012 по умолчанию <string> не подключается
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
04.02.2013, 00:45     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #10
Цитата Сообщение от soa432 Посмотреть сообщение
А прикреплять файлы iostream и т.д. к проекту не знаю как
вот они эти ваши stdafx.h, студиевцы.
-pedantic-error надо отключить
Croessmah
04.02.2013, 00:54
  #11

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
вот они эти ваши stdafx.h, студиевцы.
я студиец, но это не мой stdafx.h, а мелкософтовская игрушка

soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 01:39  [ТС]     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #12
Цитата Сообщение от DU Посмотреть сообщение
они все есть. их нужно только в нужных h и cpp файлах писать. ничего сложного.
по поводу ошибки: странная вещь. вроде ворнинг и понятно из-за чего и как от него избавится. но выдается ошибка. в настройках проекта ворнинги случайно не интерпретируются как ошибки? если да, то можно попробовать такую опцию отключить хоть она и полезная.
Что у вас в Project->Properties->Configuration Properties->C/C++->Treat Warnings As Errors ?
стоит "нет"

Добавлено через 7 минут
Как кроме #define _SCL_SECURE_NO_WARNINGS исправлять эти ошибки, просто я начинаю только, перешел с V.S. 6.0 там всего этого не было.
Я так понял в "Внешние зависимости" мне нужно в чистый проект вручную прикреплять все файлы которые использую, т.е. iostream, string.h (или string), conio.h и т.д. ?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
04.02.2013, 01:49     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #13
Цитата Сообщение от soa432 Посмотреть сообщение
т.е. iostream, string.h (или string), conio.h и т.д. ?
зачем? Вы до этого как работали то?
C++
1
2
#include <iostream>
#include <string>
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 01:49  [ТС]     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #14
Попробовал через чистый проект сделать.
Почему в строке "Массив содержит" после "слова" идут какие-то ироглефы, так понимаю ошибку теперь не выдает в чистом проекте, но работает не верно...
Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
using namespace std;
////////////////////////////////////
int main()
{
    char charray [ 80 ];
    string word;
 
    cout << "Vvedite slovo: ";
    cin >> word;
    int wlen = word.length ( );
    cout << "Po odnomu simvolu: ";
    for ( int j = 0; j < wlen; j++ )
        cout << word.at ( j );                 // должна выводить только существующие ячейки массива ?
    word.copy ( charray, wlen, 0);
    charray [ wlen ] = 0;
    cout << "\nMassiv soderjit: " << charray << endl;
 
    system ( "pause" );
    return 0;
}
Миниатюры
std::string код работает в VS 6.0, но не работает в VS2012 (error C4996)  
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
04.02.2013, 01:51     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #15
Цитата Сообщение от soa432 Посмотреть сообщение
Почему в строке "Массив содержит" после "слова" идут какие-то ироглефы
потому что не поставили символ '\0' в конце строки при копировании в chararray
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 01:51  [ТС]     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #16
Спасибо
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
04.02.2013, 01:52     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #17
C++
1
2
    word.copy ( charray, wlen, 0);
    charray [ wlen ]=0;//Вот тут, например
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,064
04.02.2013, 06:11     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #18
найдите два отличия
Цитата Сообщение от soa432 Посмотреть сообщение
word.copy ( charray, wlen, 0);
* * charray [ wlen ] = 0;
Цитата Сообщение от Croessmah Посмотреть сообщение
word.copy ( charray, wlen, 0);
* * charray [ wlen ]=0;//Вот тут, например
Croessmah
04.02.2013, 06:14
  #19

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
найдите два отличия
Я знаю, знаю
Когда я писал код, у автора было так:
C++
1
2
    word.copy ( charray, wlen, 0);
    charray [ wlen ];
Пока писал - отредактировали сообщение

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2013, 06:15     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996)
Еще ссылки по теме:

C++ Не работает getline в VS2012
C++ Error C2440: =: невозможно преобразовать 'std::string' в 'double'
C++ Std::multiset и оператор <, почему код работает?

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,064
04.02.2013, 06:15     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) #20
soa432,
попробовал твой код (буквально скопировал с экрана)
все нормально выводит
Yandex
Объявления
04.02.2013, 06:15     std::string код работает в VS 6.0, но не работает в VS2012 (error C4996)
Ответ Создать тему
Опции темы

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