Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/23: Рейтинг темы: голосов - 23, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
1

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

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

Author24 — интернет-сервис помощи студентам
Как изменился синтаксис в 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2013, 23:34
Ответы с готовыми решениями:

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

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

Как работает функция std::string::find(...)
здравствуйте есть допустим вот такой код #include &lt;iostream&gt; #include &lt;string&gt; using namespace...

Странная ошибка: [Error] no match for call to '(std::string {aka std::basic_string<char>}) (int&)'
У меня появляется проблема при компиляции сей программы: #include &lt;iostream&gt; #include &lt;string&gt;...

23
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
03.02.2013, 23:51 2
Цитата Сообщение от soa432 Посмотреть сообщение
Как изменился синтаксис в Visual Studio 2012 данной строки?
А не нужно баловаться с шаблонными проектами студии. Делайте пустые проекты.
Ну можно после
C++
1
#include "stdafx.h"
добавить
C++
1
#define _SCL_SECURE_NO_WARNINGS
для отключения ошибки(варнинга)
1
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
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
04.02.2013, 00:23 4
Цитата Сообщение от soa432 Посмотреть сообщение
Я как понял в 2012 если делать пустой проект то там вручную все библиотеки добавлять в проект типа iostream, string или я ошибаюсь ?
и даже слово main придется вручную писать
1
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 00:24  [ТС] 5
Цитата Сообщение от ValeryS Посмотреть сообщение
и даже слово main придется вручную писать
та не, я просто когда пустой проєкт создавал, там мол конфликт был, что нету библиотек, и я так понял что в пустой - все самому добавлять
А прикреплять файлы iostream и т.д. к проекту не знаю как
0
DU
1500 / 1146 / 165
Регистрация: 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 и т.д. к проекту не знаю как
:facepalm: жестоко, однако!

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

Не по теме:

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

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

Спасибо, ваш комментарий мне очень помог.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
04.02.2013, 00:45 9
Цитата Сообщение от soa432 Посмотреть сообщение
Спасибо, ваш комментарий мне очень помог.
Меня еще интересует, а как Вы string используете? В проекте VS2012 по умолчанию <string> не подключается
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
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
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
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
04.02.2013, 01:49 13
Цитата Сообщение от soa432 Посмотреть сообщение
т.е. iostream, string.h (или string), conio.h и т.д. ?
зачем? Вы до этого как работали то?
C++
1
2
#include <iostream>
#include <string>
0
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;
}
Миниатюры
std::string код работает в VS 6.0, но не работает в VS2012 (error C4996)  
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
04.02.2013, 01:51 15
Цитата Сообщение от soa432 Посмотреть сообщение
Почему в строке "Массив содержит" после "слова" идут какие-то ироглефы
потому что не поставили символ '\0' в конце строки при копировании в chararray
1
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
04.02.2013, 01:51  [ТС] 16
Спасибо
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
04.02.2013, 01:52 17
C++
1
2
    word.copy ( charray, wlen, 0);
    charray [ wlen ]=0;//Вот тут, например
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
04.02.2013, 06:11 18
найдите два отличия
Цитата Сообщение от soa432 Посмотреть сообщение
word.copy ( charray, wlen, 0);
* * charray [ wlen ] = 0;
Цитата Сообщение от Croessmah Посмотреть сообщение
word.copy ( charray, wlen, 0);
* * charray [ wlen ]=0;//Вот тут, например
0
Croessmah
04.02.2013, 06:14
  #19

Не по теме:

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

0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
04.02.2013, 06:15 20
soa432,
попробовал твой код (буквально скопировал с экрана)
все нормально выводит
0
04.02.2013, 06:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2013, 06:15
Помогаю со студенческими работами здесь

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

Как работает функция std::string::replace, какие аргументы поддерживает?
Кто знает, как работает функция std::string::replace, какие аргументы поддерживает? А то запись...

Не работает код :( Parse error: syntax error, unexpected '{', expecting T_FUNCTION
Здравствуйте. Помогите пожалуйста запустить код на сайте. Сейчас выдает ошибку Parse error: syntax...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru