Komut Satırı Argümanları
C++'da tüm programların 1 giriş noktası olması gerektiğini biliyoruz. Bu genelde main fonksiyonudur.
Program çalıştığında giriş fonksiyonunun başından kodları çalıştırmaya başlar. Eğer istersek program bağlarken kendisine verilen argümanlarıda alabiliriz.
int main(int argc, char* argv[])
- argc int parametresi, programa verien argüman sayısını tutar. Her zaman en az 1 değerinme sahiptir. Çünkü ilk argüman her zaman programın kendisidir.
- argv ise char işaretçilerinden oluşan bir dizidir. Her bir eleman C-stil bir diziye işaret eder. Bu dizinin uzunluğu argc'dir.
Aşağıda kendi argümanlarını ekrana yazdıran programı inceleyebilirsiniz.
#include <iostream> int main(int argc, char* argv[]) { std::cout << argc << " adet arguman var.\n"; // Her bir bağımsız değişkeni döngüye sokun ve sayısını ve değerini yazdırın for (int count{ 0 }; count < argc; ++count) { std::cout << count << ' ' << argv[count] << '\n'; } return 0; }
Komut satırı argümanları her zaman string olarak alınır. Bu yüzden argüman sayısal bir değer olsada string olarak alınır. Eğer sayısal bir değer almak istiyorsak bunu string olarak alıp daha sonra dönüştürmemiz gerekir.
#include <iostream> #include <sstream> // std::stringstream #include <string> int main(int argc, char* argv[]) { if (argc <= 1) { // Bazı işletim sistemlerinde argv[0], programın adı yerine boş bir dize olarak sonuçlanabilir. // Yanıtımızı argv[0]'ın boş olup olmamasına göre koşullandıracağız. if (argv[0]) std::cout << "Usage: " << argv[0] << " <number>" << '\n'; else std::cout << "Usage: <program name> <number>" << '\n'; return 1; } std::stringstream convert{ argv[1] }; // argv[1]'deki girdiyle başlatılan convert adında bir stringstream değişkeni ayarlayın int myint{}; if (!(convert >> myint)) // do the conversion myint = 0; // dönüştürme başarısız olursa, myint değerini varsayılan bir değere ayarlayın std::cout << "Tam sayı: " << myint << '\n'; return 0; }
Komut satırına bir şey yazdığınızda (veya programınızı IDE'den çalıştırdığınızda), bu isteği uygun şekilde çevirmek ve yönlendirmek işletim sisteminin sorumluluğundadır. Bu sadece yürütülebilir dosyanın çalıştırılmasını değil, aynı zamanda argümanların nasıl işleneceğini ve uygulamaya nasıl aktarılacağını belirlemek için ayrıştırılmasını da içerir.
UCH Viki'den alınmıştır. https://wiki.ulascemh.com/doku.php?id=tr:cs:cpp:common:commandlinearg Çıkarma operatörü başlığında ikinci satırda aşırı yükleme kısmına link verilecek.