Command Line Arguments
Command line arguments क्या हैं?
ज़्यादातर beginner programs शुरू होने के बाद cin से input माँगते हैं। Command line arguments input देने का अलग तरीका है: program *launch* करते समय उसके नाम के बाद values लिख दी जाती हैं।
./result Aman 78 85 91
यहाँ Aman, 78, 85 और 91 program के चलने से पहले ही उसे मिल जाते हैं। असली tools ऐसे ही काम करते हैं — g++ main.cpp -o main compiler को तीन arguments देता है। File names, options और बिना इंसानी input के चलने वाली scripts के लिए arguments बढ़िया हैं।
main() का signature
Arguments लेने के लिए main को दो parameters के साथ लिखें:
int main(int argc, char* argv[]) // या, बिल्कुल यही: int main(int argc, char** argv)
| Parameter | अर्थ |
|---|---|
argc | Argument count — कितनी strings दी गईं, program के नाम *सहित* |
argv | Argument vector — C-strings का array; argv[0] program का नाम |
argv[argc] | हमेशा null pointer (अंत का निशान) |
./result Aman 78 85 91 के लिए: argc 5 है, argv[0] "./result" है, argv[1] "Aman" है, … argv[4] "91" है।
उदाहरण 1: हर argument print करना
#include <iostream>
int main(int argc, char* argv[]) {
std::cout << "argc = " << argc << "\n";
for (int i = 0; i < argc; i++) {
std::cout << "argv[" << i << "] = " << argv[i] << "\n";
}
return 0;
}g++ args.cpp -o args ./args hello "Class 12" 2026
Quotes space वाले शब्दों को एक argument बना देते हैं: "Class 12" एक argument है।
उदाहरण 2: arguments से numbers
Arguments हमेशा text होते हैं। उन्हें std::stoi (int) या std::stod (double) से बदलें, और पहले count check करें।
#include <iostream>
#include <string>
#include <stdexcept>
int main(int argc, char* argv[]) {
if (argc < 3) {
std::cerr << "Usage: " << argv[0] << " <name> <mark1> [mark2 ...]\n";
return 1;
}
std::string name = argv[1];
int total = 0;
try {
for (int i = 2; i < argc; i++) {
std::size_t used = 0;
int mark = std::stoi(argv[i], &used);
if (argv[i][used] != '\0') // "7x" is not a valid mark
throw std::invalid_argument(argv[i]);
total += mark;
}
} catch (const std::exception& e) {
std::cerr << "All marks must be whole numbers.\n";
return 1;
}
int subjects = argc - 2;
std::cout << name << ": total " << total
<< ", average " << static_cast<double>(total) / subjects << "\n";
return 0;
}./result Aman 78 85 91
गलत input पर program 1 लौटाता है — non-zero exit code scripts को बताता है कि कुछ गड़बड़ हुई।
Arguments को vector में copy करना
सीधे char* के साथ काम करना असुविधाजनक है। उन्हें एक बार modern types में copy कर लें:
#include <string>
#include <vector>
int main(int argc, char* argv[]) {
std::vector<std::string> args(argv + 1, argv + argc); // program का नाम छोड़ो
for (const auto& a : args) {
if (a == "--help") { /* help दिखाओ */ }
}
return 0;
}अब == से तुलना, .size() और vector को functions में भेजना — सब आसान है।
IDE से arguments देना
| Tool | Arguments कहाँ set करें |
|---|---|
| Terminal / Command Prompt | program.exe arg1 arg2 या ./program arg1 arg2 |
| Code::Blocks | Project → Set programs' arguments |
| Dev-C++ | Execute → Parameters |
| Visual Studio | Project Properties → Debugging → Command Arguments |
| VS Code | launch.json में "args": ["arg1", "arg2"] |
Command line arguments कहाँ इस्तेमाल होते हैं
- File name देना:
./marks-report students.csv - Options और flags:
--verbose,-o output.txt - Automation: batch scripts और scheduled jobs जो बिना user input के चलते हैं
- Competitive और practical exams में कभी-कभी test sizes इसी तरह पढ़े जाते हैं
आम गलतियाँ
argccheck किए बिनाargv[1]इस्तेमाल करना — argument न देने पर crash।- भूल जाना कि
argv[0]program का नाम है, असली arguments index 1 से शुरू होते हैं। - C-strings की
==से तुलना (argv[1] == "--help"pointers की तुलना करता है)।std::string(argv[1]) == "--help"याstrcmpलें। - Arguments को बिना बदले numbers मान लेना।
- Non-numeric text के exception को संभाले बिना
std::stoicall करना — और यह भूलना किstoi("7x")चुपचाप 7 लौटा देता है, जब तक आप यह check न करें कि कितने characters इस्तेमाल हुए।
calc program लिखें जो तीन arguments ले — एक number, एक operator (+ - x /) और दूसरा number — और नतीजा print करे, जैसे ./calc 12 x 5 से 60। Arguments की संख्या गलत हो तो usage message दिखाएँ और zero से भाग संभालें। (गुणा के लिए x लें क्योंकि ज़्यादातर shells * को फैला देते हैं।)
सारांश
- Command line arguments वे values हैं जो program launch करते समय उसके नाम के बाद लिखी जाती हैं।
- इन्हें
int main(int argc, char* argv[])से लें। argcprogram के नाम सहित arguments गिनता है;argv[0]नाम है।- Arguments strings हैं —
stoi/stodसे बदलें और errors संभालें। argv[i]पढ़ने से पहले हमेशाargccheck करें।
संबंधित: functions, strings, file handling, exception handling।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
C++ में argc और argv क्या हैं?
argc (argument count) command-line arguments की संख्या है, program के नाम सहित। argv (argument vector) C-strings का array है: argv[0] program का नाम, argv[1] पहला असली argument, और इसी तरह argv[argc - 1] तक; argv[argc] null pointer होता है।C++ में command line argument को integer में कैसे बदलें?
int के लिए std::stoi(argv[1]), double के लिए std::stod, long के लिए std::stol (<string> से) लें। Call को try/catch में रखें, क्योंकि text number न हो तो stoi std::invalid_argument throw करता है।Code::Blocks या VS Code में command line arguments कैसे दें?
launch.json में "args" array जोड़ें, या compiled program को terminal से चलाएँ: ./program arg1 arg2।क्या argc कभी zero होता है?
argc कम से कम 1 होता है क्योंकि argv[0] में program का नाम होता है। C++ standard तकनीकी रूप से argc 0 होने की अनुमति देता है, इसलिए मज़बूत programs argv[0] इस्तेमाल करने से पहले argc check करते हैं।