Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
#1

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

03.02.2013, 23:34. Просмотров 2824. Ответов 23
Метки нет (Все метки)

Как изменился синтаксис в 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'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2013, 23:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос std::string код работает в VS 6.0, но не работает в VS2012 (error C4996) (C++):

Не работает прога. error C4996: 'itoa' - C++
Вот сам код программы #include &quot;stdafx.h&quot; #include &lt;string.h&gt; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; ...

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri - C++
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

Error C2664: std::vector<_Ty>::push: невозможно преобразовать параметр 1 из 'double' в 'const std::string &' - C++
#include &lt;iostream&gt; #include &lt;stack&gt; #include &lt;sstream&gt; #include &lt;string&gt; using namespace std; int main() { string...

Std::multiset и оператор <, почему код работает? - C++
struct exam_man { exam_man ( string b) : name(b), res_bit(false) { } ...

Error C2440: =: невозможно преобразовать 'std::string' в 'double' - C++
&gt;c:\users\nreshetova\documents\visual studio 2008\projects\sort3d1\sort3d1\sort3d1.cpp(73) : error C2440: =: невозможно преобразовать...

Не работает getline в VS2012 - C++
От код на линуксе все отлично а от в визуалке проблемы #include &lt;fstream&gt; #include &lt;cstring&gt; #include &lt;iostream&gt; using namespace...

23
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
03.02.2013, 23:51 #2
Цитата Сообщение от soa432 Посмотреть сообщение
Как изменился синтаксис в Visual Studio 2012 данной строки?
А не нужно баловаться с шаблонными проектами студии. Делайте пустые проекты.
Ну можно после
C++
1
#include "stdafx.h"
добавить
C++
1
#define _SCL_SECURE_NO_WARNINGS
для отключения ошибки(варнинга)
1
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 00:19  [ТС] #3
Цитата Сообщение от Croessmah Посмотреть сообщение
А не нужно баловаться с шаблонными проектами студии. Делайте пустые проекты.
Ну можно после
C++
1
#include "stdafx.h"
добавить
C++
1
#define _SCL_SECURE_NO_WARNINGS
для отключения ошибки(варнинга)
Я как понял в 2012 если делать пустой проект то там вручную все библиотеки добавлять в проект типа iostream, string или я ошибаюсь ?
0
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,189
04.02.2013, 00:23 #4
Цитата Сообщение от soa432 Посмотреть сообщение
Я как понял в 2012 если делать пустой проект то там вручную все библиотеки добавлять в проект типа iostream, string или я ошибаюсь ?
и даже слово main придется вручную писать
1
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 00:24  [ТС] #5
Цитата Сообщение от ValeryS Посмотреть сообщение
и даже слово main придется вручную писать
та не, я просто когда пустой проєкт создавал, там мол конфликт был, что нету библиотек, и я так понял что в пустой - все самому добавлять
А прикреплять файлы iostream и т.д. к проекту не знаю как
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.02.2013, 00:31 #6
они все есть. их нужно только в нужных h и cpp файлах писать. ничего сложного.
по поводу ошибки: странная вещь. вроде ворнинг и понятно из-за чего и как от него избавится. но выдается ошибка. в настройках проекта ворнинги случайно не интерпретируются как ошибки? если да, то можно попробовать такую опцию отключить хоть она и полезная.
Что у вас в Project->Properties->Configuration Properties->C/C++->Treat Warnings As Errors ?
0
Croessmah
04.02.2013, 00:39
  #7

Не по теме:

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

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

0
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 00:43  [ТС] #8
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:

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

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

Спасибо, ваш комментарий мне очень помог.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
04.02.2013, 00:45 #9
Цитата Сообщение от soa432 Посмотреть сообщение
Спасибо, ваш комментарий мне очень помог.
Меня еще интересует, а как Вы string используете? В проекте VS2012 по умолчанию <string> не подключается
0
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,590
04.02.2013, 00:45 #10
Цитата Сообщение от soa432 Посмотреть сообщение
А прикреплять файлы iostream и т.д. к проекту не знаю как
вот они эти ваши stdafx.h, студиевцы.
-pedantic-error надо отключить
0
Croessmah
04.02.2013, 00:54
  #11

Не по теме:

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

0
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 01:39  [ТС] #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 и т.д. ?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
04.02.2013, 01:49 #13
Цитата Сообщение от soa432 Посмотреть сообщение
т.е. iostream, string.h (или string), conio.h и т.д. ?
зачем? Вы до этого как работали то?
C++
1
2
#include <iostream>
#include <string>
0
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 01:49  [ТС] #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;
}
0
Миниатюры
std::string код работает в VS 6.0, но не работает в VS2012 (error C4996)  
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
04.02.2013, 01:51 #15
Цитата Сообщение от soa432 Посмотреть сообщение
Почему в строке "Массив содержит" после "слова" идут какие-то ироглефы
потому что не поставили символ '\0' в конце строки при копировании в chararray
1
04.02.2013, 01:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2013, 01:51
Привет! Вот еще темы с ответами:

запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’ - C++
private: std::string firstName; }; std::string ClientData::getFirstName() const{ return firstName; } Дает в итоге...

Не работает код с Функцией error и библиотекой std_lib_facilities из книги Страуструпа - C++
Я новичок в программировании. Учу по книге Страуструпа, там вначале нужно было подключить нестандартуную библиотеку &quot;std_lib_facilities&quot;,...

Не работает std::cout || std::cin - C++
#include &quot;Account.h&quot; #include &lt;string&gt; #include &lt;iostream&gt; using std::cout; Account :: Account(int startBalance) { ...

Занести код символа в std::string - C++
Всем привет. Есть задача: у нас есть std::vector&lt;char&gt; v; в вектор я добавляю элементы так: v.push_back(0x55); возможно...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru