getline से इनपुट सुरक्षित रूप से पढ़ना
पंक्ति-आधारित इनपुट के लिए std::getline का उपयोग करें और उसे इस्तेमाल करने से पहले उपयोगकर्ता के इनपुट का सत्यापन करें।
getline से इनपुट सुरक्षित रूप से पढ़ना, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
सुरक्षित इनपुट क्यों महत्वपूर्ण है
उपयोगकर्ता का इनपुट क्रैश का सबसे सामान्य स्रोत है। गलत प्रकार, खाली पंक्ति या अनपेक्षित वर्ण — ये सभी एक सरल प्रोग्राम को विफल कर सकते हैं। सावधानीपूर्वक पढ़ना आवश्यक है।
std::getline की मूल बातें
std::getline(stream, line) अगली नई पंक्ति तक वर्ण पढ़ता है। नई पंक्ति पढ़कर हटा दी जाती है, लेकिन संग्रहीत नहीं की जाती।
std::string line;
std::getline(std::cin, line);कस्टम विभाजक
केवल नई पंक्ति ही नहीं, बल्कि किसी भी वर्ण पर रुकने के लिए तीसरा तर्क दें।
std::string field;
std::getline(std::cin, field, ',');संख्यात्मक इनपुट का सत्यापन
पहले पूरी पंक्ति पढ़ें, फिर उसका विश्लेषण करें। इससे गलत इनपुट होने पर cin की विफलता स्थिति से बचा जा सकता है।
std::string line;
int n;
if (std::getline(std::cin, line)) {
try {
n = std::stoi(line);
} catch (...) {
std::cout << "Invalid number\n";
}
}मान्य इनपुट मिलने तक लूप
जब तक उपयोगकर्ता मान्य इनपुट न दे, तब तक दोबारा पूछते रहने के लिए getline को try/catch के साथ मिलाएँ।
int age;
while (true) {
std::cout << "Age: ";
std::string line;
std::getline(std::cin, line);
try {
age = std::stoi(line);
if (age >= 0 && age < 150) break;
} catch (...) {}
std::cout << "Try again.\n";
}getline में EOF का पता लगाना
getline EOF मिलने पर स्ट्रीम को विफलता स्थिति में सेट करता है। कॉल के बाद स्ट्रीम की जाँच करें।
std::string line;
while (std::getline(std::cin, line)) {
process(line);
}व्हाइटस्पेस हटाना
उपयोगकर्ता अक्सर अतिरिक्त स्पेस जोड़ देते हैं। पढ़ने के बाद दोनों सिरों से व्हाइटस्पेस हटाएँ।
void trim(std::string& s) {
size_t start = s.find_first_not_of(" \t\r\n");
size_t end = s.find_last_not_of(" \t\r\n");
s = (start == std::string::npos) ? "" : s.substr(start, end - start + 1);
}स्ट्रीम साफ़ करना
यदि आप >> और getline को मिलाते हैं, तो पहले बची हुई सामग्री साफ़ करें।
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');प्रति पंक्ति कई मान पढ़ना
पूरी पंक्ति पढ़ें, फिर उसे stringstream में भेजकर मान निकालें।
std::string line;
std::getline(std::cin, line);
std::istringstream iss(line);
int a, b, c;
iss >> a >> b >> c;अधिकतम लंबाई से सुरक्षा
अनजाने में संसाधनों के समाप्त होने से रोकने के लिए बहुत लंबे इनपुट को शुरू में ही अस्वीकार करें।
std::string line;
if (std::getline(std::cin, line) && line.size() > 1024) {
std::cout << "Input too long.\n";
return 1;
}पासवर्ड या छिपा हुआ इनपुट पढ़ना
मानक लाइब्रेरी इनपुट को स्क्रीन पर दिखाई देने से नहीं रोकती। पासवर्ड पूछने के लिए Unix पर termios या Windows पर SetConsoleMode जैसे प्लेटफ़ॉर्म API का उपयोग करें।
त्वरित जाँच
std::cin >> n के बजाय getline से पढ़ना और फिर विश्लेषण करना अधिक सुरक्षित क्यों है?
पुनरावृत्ति
उपयोगकर्ता का इनपुट std::getline से पढ़ें, सत्यापन या विश्लेषण अलग से करें और व्हाइटस्पेस हटाएँ। विश्लेषण को try/catch में रखें और मान्य मान मिलने तक लूप चलाएँ। निष्कर्षण और पंक्ति पढ़ने को मिलाने पर स्ट्रीम साफ़ करें।
एआई शिक्षक के साथ C++ सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “getline से इनपुट सुरक्षित रूप से पढ़ना” पाठ निःशुल्क है?
हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “getline से इनपुट सुरक्षित रूप से पढ़ना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“getline से इनपुट सुरक्षित रूप से पढ़ना” में मैं क्या सीखूँगा?
पंक्ति-आधारित इनपुट के लिए std::getline का उपयोग करें और उसे इस्तेमाल करने से पहले उपयोगकर्ता के इनपुट का सत्यापन करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“getline से इनपुट सुरक्षित रूप से पढ़ना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- std::cin और std::cout का उचित उपयोग
- iomanip से आउटपुट फ़ॉर्मैट करना
- getline से इनपुट सुरक्षित रूप से पढ़ना
- std::cerr और std::clog के साथ कार्य करना