Подтвердить что ты не робот

Использование С++ strtk приводит к ошибке использования C4996

Итак, я работаю над небольшим проектом, чтобы попасть на С++, а часть этого - чтение и запись данных в файл. Я выбрал самый простой маршрут, о котором я знаю, который превращает различные атрибуты объекта в строку целых чисел. Чтобы быть ясным, я работаю с объектом "День", который имеет различные атрибуты о моем дне (минуты спали, минуты тренировки и т.д.). В настоящее время у меня есть следующий фрагмент кода:

string Day::writeAsData()
{
    // Writes the day as a condensed machine-readable format:
    // {rawTime,busyMinutes,sleepMinutes,productivity,enjoyment,fatigue,weight,calories}
    // e.g. {1444316982,645,360,7,4,5,180,0}
    string dataString = "{"
        + to_string(rawTime) + ","
        + to_string(busyMinutes) + ","
        + to_string(sleepMinutes) + ","
        + to_string(productivity) + ","
        + to_string(enjoyment) + ","
        + to_string(fatigue) + ","
        + to_string(weight) + ","
        + to_string(calories)
        + "}";

    return dataString;
}

чтобы записать данные в ясном машиночитаемом формате. Я работаю над функцией-компаньоном, чтобы получить данные из строки и соответствующим образом установить значения объекта Day. Я нашел С++ String Toolkit Library, и я хочу использовать его функцию parse(). Однако, добавив

#include "strtk.hpp"

к моему списку включений в конечном итоге бросает ключ в сборку. Принимая эту линию, я получаю чистую и успешную сборку. Однако добавление этой строки приводит к

Error   C4996   'std::_Fill_n': 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.

в строке 2811 бесполезности. Я не использую std:: Fill_n в любом месте моего кода.

До сих пор я обнаружил, что String Toolkit использует библиотеки Boost, которые я поместил в свою директорию include. Я попытался добавить

#define D_SCL_SECURE_NO_WARNINGS 1

в файл Day.cpp и файл Day.h, но ничего не сделали. Я не могу добавить его в xutility, потому что файл только для чтения. Как я могу отключить предупреждение или исправить проблему?

4b9b3361

Ответ 1

Во-первых, ваш #define неверен, это должно быть:

#define _SCL_SECURE_NO_WARNINGS

Подробнее здесь: MSDN: _SCL_SECURE_NO_WARNINGS

И здесь: Что такое "использование -D_SCL_SECURE_NO_WARNINGS" значит?

Во-вторых, если вы используете визуальную студию (и я предполагаю, что вы это), вы можете определить _SCL_SECURE_NO_WARNINGS для всего проекта, используя настройки проекта в Определения препроцессора