Tôi có một C đơn giản ++ với Boost như thế này:C++ Boost: nguyên nhân của cảnh báo này là gì?
#include <boost/algorithm/string.hpp>
int main()
{
std::string latlonStr = "hello,ergr()()rg(rg)";
boost::find_format_all(latlonStr,boost::token_finder(boost::is_any_of("(,)")),boost::const_formatter(" "));
này hoạt động tốt; nó thay thế tất cả các lần xuất hiện của(), với một ""
Tuy nhiên, tôi nhận được cảnh báo này khi biên dịch:
Tôi đang sử dụng MSVC 2008, Tăng 1.37.0.
1>Compiling...
1>mainTest.cpp
1>c:\work\minescout-feat-000\extlib\boost\algorithm\string\detail\classification.hpp(102) : warning C4996: 'std::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'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\xutility(2576) : see declaration of 'std::copy'
1> c:\work\minescout-feat-000\extlib\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
1> with
1> [
1> CharT=char,
1> IteratorT=const char *,
1> RangeT=boost::iterator_range<const char *>
1> ]
1> c:\work\minescout-feat-000\minescouttest\maintest.cpp(257) : see reference to function template instantiation 'boost::algorithm::detail::is_any_ofF<CharT> boost::algorithm::is_any_of<const char[4]>(RangeT (&))' being compiled
1> with
1> [
1> CharT=char,
1> RangeT=const char [4]
1> ]
tôi chắc chắn có thể vô hiệu hóa các cảnh báo bằng
-D_SCL_SECURE_NO_WARNINGS
nhưng tôi một chút miễn cưỡng để làm điều đó trước khi tôi tìm hiểu những gì sai, hay quan trọng hơn nếu mã của tôi là không chính xác.
Cảnh báo này làm tôi phát điên, giống như "cảnh báo" về nội dung của một tách cà phê nóng. – Clay
điều tồi tệ nhất về nó là không có "sửa chữa" lành mạnh. Hầu hết các cảnh báo được ban hành vì có một cách tốt hơn, ít bị lỗi hơn để đạt được điều tương tự. Chúng có thể được * cố định *. Bạn phải làm gì với cái này? Nếu bạn có một mảng C nguyên và bạn cần phải sao chép dữ liệu đến hoặc từ nó, con trỏ là kiểu duy nhất của trình lặp có sẵn. std :: copy là một lựa chọn an toàn nhất để sử dụng. Hay là họ gợi ý chúng ta quay trở lại bằng văn bản cho các vòng để đạt được điều tương tự? – jalf
Tôi đặt cược 100 đại diện rằng nó sẽ bị xóa trong SP đầu tiên cùng với người khác "họ không kiểm tra những gì họ phát hành?" vấn đề ... –