2012-05-08 16 views
9

std::string पर अन-सहेजे गए वर्ण अनुक्रम इनपुट करने का सबसे दर्दनाक तरीका क्या होगा? (अक्षर से बचने के लिए सही ढंग से की वजह से काम नहीं करता):बचने के पात्रों के बिना सी ++ में std :: स्ट्रिंग को परिभाषित करें

के बजाय

std::string st = "C:\\program files\\myFile.txt"; 

कुछ की तरह

std::string st = "C:\program files\myFile.txt"; 
+0

आप कैसे बना रहे हैं? क्या आप सामग्री को '.txt' फ़ाइल में संग्रहीत कर सकते हैं और इसे 'मेकफ़ाइल' नियम जोड़ सकते हैं ताकि इसे .hh फ़ाइल में परिवर्तित किया जा सके? –

+0

@ माइकसमुएल, मैं विजुअल स्टूडियो का उपयोग कर रहा हूं। –

+0

क्या डाउनवॉटर बता सकता है कि प्रश्न में क्या गलत है? –

उत्तर

22

फ़ाइल नाम के लिए, बस का उपयोग दूसरी दिशा स्लैश (आगे वापस??)। यह विंडोज़ पर भी काम करता है:

std::string st = "C:/program files/myFile.txt"; 
+2

एफएफआर, आगे: /, पीछे: \। – chris

+4

@ क्रिस: धन्यवाद, लेकिन आपका प्रयास बर्बाद हो गया है। मैं फिर से भूल जाऊंगा क्योंकि मेरा दिमाग इसे याद रखने के लिए पर्याप्त महत्वपूर्ण नहीं मानता है। –

+1

यह हमेशा कुछ फ़ाइल सिस्टम ड्राइवरों के साथ काम नहीं करेगा, या यदि पथ MAX_PATH से लंबा है और विस्तारित पथ उपसर्ग का उपयोग – paulm

0

सी & सी ++ केवल तार से बचने के लिए \ का उपयोग कर का समर्थन करता है, और आप इसे उपयोग करने के लिए है। यदि आपके पास काम करने के लिए पथ का एक गुच्छा है, तो मैं उन्हें एक संपादक में खोलने और \\ के साथ \ n थोक प्रतिस्थापन करने का सुझाव दूंगा।

+5

एफवाईआई: जुंचोपांजा के जवाब को पढ़ें, कच्चे स्ट्रिंग अक्षर ने आखिरकार अपनी लुप्तप्राय बना दी। –

52

आप सी ++ 11 raw string literals साथ यह कर सकते हैं:

std::string st = R"(C:\program files\myFile.txt)"; 
+1

बहुत बढ़िया। विस्तृत चरित्र के लिए एलआर। और वाक्यविन्यास ने मुझे पहले भ्रमित कर दिया क्योंकि स्ट्रिंग की शुरुआत और अंत के लिए डिलीमीटर डबल वर्ण अनुक्रम हैं ... "(... और फिर ...)" –

+1

ईवी यह वाक्यविन्यास घृणित है। उद्धरण में() को रखने के लिए किसका उज्ज्वल विचार था? और वैकल्पिक संस्करण, आर "delimiter() delimiter", और भी बदतर है। – Andrew