2015-12-11 7 views
12

तो मैं सी ++ में जाने के लिए एक छोटी परियोजना पर काम कर रहा हूं, और इसका एक हिस्सा फ़ाइल को डेटा पढ़ रहा है और लिख रहा है। मैंने सबसे सरल मार्ग चुना है जिसे मैं जानता हूं, जो ऑब्जेक्ट के विभिन्न गुणों को पूर्णांक की स्ट्रिंग में बदल रहा है। स्पष्ट रूप से, मैं एक वस्तु "दिवस" ​​जो मेरे दिन के बारे में विभिन्न विशेषताओं के साथ काम कर रहा हूँ (मिनट सोया, मिनट का प्रयोग किया, आदि) मैं वर्तमान में निम्नलिखित स्निपेट है:सी ++ स्ट्रैट के परिणामस्वरूप एक्सटिलिटी त्रुटि 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; 
} 

लिखने के लिए स्पष्ट मशीन-पठनीय प्रारूप में डेटा। मैं स्ट्रिंग से डेटा प्राप्त करने के लिए एक साथी फ़ंक्शन पर काम कर रहा हूं और दिन ऑब्जेक्ट के मूल्यों को उचित रूप से सेट करता हूं। मुझे C++ String Toolkit Library मिला, और मैं इसके पार्स() फ़ंक्शन का उपयोग करना चाहता हूं। हालांकि,

#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. 

xutility के लाइन 2811 में उस लाइन परिणाम जोड़ना। मैं अपने कोड में कहीं भी std :: Fill_n का उपयोग नहीं करता हूं।

अब तक, मैंने पाया है कि स्ट्रिंग टूलकिट बूस्ट पुस्तकालयों का उपयोग करता है, जिसे मैंने अपनी निर्देशिका में रखा है। मैंने

#define D_SCL_SECURE_NO_WARNINGS 1 

मेरी Day.cpp फ़ाइल और मेरी Day.h फ़ाइल में जोड़ने की कोशिश की, लेकिन न तो कुछ भी किया है। मैं इसे अस्थिरता में नहीं जोड़ सकता क्योंकि फ़ाइल केवल पढ़ी जाती है। मैं या तो चेतावनी को अक्षम या समस्या को कैसे ठीक कर सकता हूं?

उत्तर

10

पहले, अपने #define सही नहीं है, यह होना चाहिए:

#define _SCL_SECURE_NO_WARNINGS 

अधिक यहाँ विवरण: MSDN: _SCL_SECURE_NO_WARNINGS

और यहाँ: What does "use -D_SCL_SECURE_NO_WARNINGS" mean?

दूसरा, यदि आप दृश्य का उपयोग कर रहे स्टूडियो (और मुझे लगता है कि आप हैं) आप Preprocessor Definitions

के तहत प्रोजेक्ट सेटिंग्स का उपयोग करके अपनी पूरी परियोजना के लिए _SCL_SECURE_NO_WARNINGS को परिभाषित कर सकते हैं
+0

तो यह काम किया, तरह। मैंने इसे प्रीप्रोसेसर सेटिंग्स में परिभाषित किया, और त्रुटि दिखाना बंद कर दिया। अब, हालांकि, मुझे त्रुटि दे रही है LNK1104: फ़ाइल 'libboost_regex-vc140-mt-gd-1_59.lib' –

+0

नहीं खोल सकता है यह देखता है कि यह मदद करता है: http://stackoverflow.com/questions/2274188/fatal-error -lnk1104-नहीं कर सकते हैं-खुला-फ़ाइल-libboost-regex-vc90-MT-GD-1-42-लिब – yms

संबंधित मुद्दे