با سلام
وقتي مي خوايم يه برنامه ورودي بگيره بايد اون رو توسط پارامترهاي خاصي در تابع main برنامه بخونيم مثلا:
#include<iostream>
int main(int argc, char* argv[]) {
cout << argc<< endl;
cout << argv[0];
if(argc == 2)
cout << argv[1]<< endl;
cin.get();
return 0;
}
برنامه ي بالا تعداد آرگومانهاي برنامه رو مي نويسه(كه اگه يه فايل به وسيله ي خط فرمان به تابع ارسال شود تعداد دوتا مي شود)نام برنامه رو مي نويسه كه همون نام برنامه ي exe نوشته شده به وسيله ي خودتونه.
به طور كلي اگه بخوايم براي پارامترهاي خط فرمان برنامه نويسي كنيم بايد در تعريف تابع main به شكل زير عمل كنيم:
int main(int argc, char *argv[]);
كه پارامتر اول يك عدد است كه تعداد پارامترهاي رد شده به برنامه رو مي گه.
و دومي يه آرايه ي رشته ايه كه اوليش( يعني خونه ي صفر آرايه) نام خود برنامه است، دوميش مقدار رشته ايه اولين پارامتر رو داره، سوميش مقدار رشته ايه دومين پارامتر رو داره و ...
برنامه ي بالا اسم خودش رو مي نويسه
و بعد بررسي مي كنه كه اگه تعداد پارامترهاي ورودي 2 تا بود اونوقت پارامتر دوم رو هم چاپ مي كنه.
مثلا وقتي برنامه من رو توي درايو c با نام test.exe ذخيره كرده باشيد و توي cmd فقط نام برنامه رو بنويسيد يعني دستور test.exe رو بنويسيد خروجي زير:
111.JPG
و اگه با دستور test.exe yourfile.txt فراخوانيش كنيد برنامه خروجي زير را توليد مي كند:
222.JPG
و اگه تعداد پارامترها بيش از دو تا باشد يعني مثلا دستور test.exe yourfile.txt secondeparameter فراخوانيش كنيد چون تعدا پارامترهاش دو تا نيست خروجي زير را توليد مي كند:
333.JPG
مي بينيد كه تو هر بار فراخواني برنامه تعداد پارامترها رو مي نويسه. براي وارد كردن پارامتر بعد كافيه يه خط فاصله بذاريم و پارامتر بعد رو بنويسيم.
در ضمن مي تونيد به لينك زير براي اطلاعات بيشتر مراجعه كنيد:
How to parse command line parameters.