कैसे पार्स करने के लिए एक स्ट्रिंग को विभाजित करने के साथ भ्रमित होने की नहीं बुद्धिमान, जैसे:
Split a string in C++?विभाजन सी ++ स्ट्रिंग्स एकाधिक पंक्तियाँ (कोड सिंटेक्स, नहीं पार्सिंग) पर
मैं कर रहा हूँ एक सा कैसे एक स्ट्रिंग को विभाजित करने के लिए के रूप में उलझन में सी ++ में कई लाइनों पर।
यह एक सरल सवाल की तरह लगता है, लेकिन निम्न उदाहरण लेते हैं:
#include <iostream>
#include <string>
main() {
//Gives error
std::string my_val ="Hello world, this is an overly long string to have" +
" on just one line";
std::cout << "My Val is : " << my_val << std::endl;
//Gives error
std::string my_val ="Hello world, this is an overly long string to have" &
" on just one line";
std::cout << "My Val is : " << my_val << std::endl;
}
मुझे लगता है कि मैं std::string
append()
विधि इस्तेमाल कर सकते हैं, लेकिन अगर वहाँ था किसी भी छोटी/अधिक सुरुचिपूर्ण मैं सोच रहा था (जैसे अधिक pythonlike, हालांकि स्पष्ट रूप से ट्रिपल उद्धरण आदि सी ++ में समर्थित नहीं हैं) पठनीयता के लिए कई लाइनों पर सी ++ में तार तोड़ने के तरीके।
एक जगह जहां यह विशेष रूप से वांछनीय होगा जब आप किसी फ़ंक्शन में लंबी स्ट्रिंग अक्षर पारित कर रहे हैं (उदाहरण के लिए एक वाक्य)।
यहाँ एक दिलचस्प tidbit है: सी ++ lexer वास्तव में परवाह नहीं करता है कि कितने उद्धरण आप से पहले और केवल दो अपवादों के साथ एक स्ट्रिंग के बाद जगह के बारे में। आपके द्वारा उपयोग किए जाने वाले उद्धरणों की संख्या अजीब होनी चाहिए और उन्हें किसी भी तरफ मिलना चाहिए। '" "" "" यह एक वैध स्ट्रिंग है और इसे "" "" "पार्स किया जाएगा। हालांकि, इन तारों को कोई विशेष गुण नहीं दिया गया है, वे केवल एकल उद्धरणों की तरह व्यवहार करते हैं। –
साझा करने के लिए दिलचस्प धन्यवाद ... क्या इसके लिए कोई उपयोगी उद्देश्य है? आप पेर्ल/बैश/पायथन स्क्रिप्ट द्वारा बाहरी पार्सिंग के लिए कोड में स्ट्रिंग के विभिन्न समूहों के लिए एक सूक्ष्म टैग के रूप में इसका उपयोग करने में सक्षम हो सकते हैं। यही वह सब है जिसके बारे में मैं सोच सकता हूं। :) –
@ थॉमस एंथनी यह बस होता है क्योंकि यह अंत में उद्धरणों को खाली तारों के समूह के रूप में समझता है और उन्हें एक साथ जोड़ता है - यह एक विशेषता नहीं है, यह मानक सी/सी ++ व्यवहार – texasflood