====== 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
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
#include // std::stringstream
#include
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] << " " << '\n';
else
std::cout << "Usage: " << '\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.
[[tr:cs:cpp:common:commandlinearg|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.