Почему вызов boost :: split () дает столько предупреждений? - PullRequest
1 голос
/ 11 марта 2012

Мне нужна функция для разделения строк на dleimiter, и я использую библиотеку boost для других целей, поэтому я попробовал использовать boost :: split. Это работает, но дает мне кучу предупреждений, и я хотел бы знать, почему.

Ниже приведен упрощенный код, выдающий предупреждения в MSVC ++ 10:

#include <tchar.h>
#include <iostream>
#include <string>
#include <vector>
#include <boost/algorithm/string.hpp>

int _tmain(int argc, _TCHAR* argv[])
{
    std::vector<std::string> split_vector;
    boost::split(split_vector, "string,to,split", boost::is_any_of(","));
    for(size_t i=0;i<split_vector.size();i++)  {
        std::cout << split_vector[i] << "\n";
    }
}

Есть около 100 строк предупреждений, и я не знаю, как сделать складные / прокручиваемые вещи, но они все такие:

c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2227): warning C4996: 'std::_Copy_impl': 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'
c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2212) : see declaration of 'std::_Copy_impl'
c:\program files\boost\boost_1_49_0\boost\algorithm\string\detail\classification.hpp(102) : see reference to function template instantiation '_OutIt std::copy<const char*,char*>(_InIt,_InIt,_OutIt)' being compiled
with
[
    _OutIt=char *,
    _InIt=const char *
]
c:\program files\boost\boost_1_49_0\boost\algorithm\string\classification.hpp(206) : see reference to function template instantiation 'boost::algorithm::detail::is_any_ofF<CharT>::is_any_ofF<boost::iterator_range<IteratorT>>(const RangeT &)' being compiled
with
[
    CharT=char,
    IteratorT=const char *,
    RangeT=boost::iterator_range<const char *>
]
c:\users\administrator\documents\visual studio 2010\projects\cas testing\tests\tests.cpp(10) : see reference to function template instantiation 'boost::algorithm::detail::is_any_ofF<CharT> boost::algorithm::is_any_of<const char[2]>(RangeT (&))' being compiled
with
[
    CharT=char,
    RangeT=const char [2]
]

и т. Д.

Кто-нибудь знает, что происходит?

1 Ответ

1 голос
/ 11 марта 2012

В первой строке предупреждения рассказывается обо всем, как о причинах, так и о том, как этого избежать, в том числе следующее: чтобы отключить это предупреждение, используйте -D_SCL_SECURE_NO_WARNINGS.Поэтому перейдите в свойства проекта и поместите _SCL_SECURE_NO_WARNINGS среди предопределенных макросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...