C++

Konsolu C++'da iostream Sınıfları ile Yönetme

Konsolu C++'da iostream Sınıfları ile Yönetme

Bilgisayarda konsol, bilgisayar klavyesi ve bilgisayar monitörüdür. Geçmişte çıktı, monitörde görüntülenen bir pencereye değil, doğrudan monitör ekranına gönderiliyordu. Sıradan bir bilgisayar kullanıcısı için, günümüzdeki uygulamalar monitörü açıkça kullanmamaktadır. Bu uygulamalar monitörde görüntülenen pencereleri kullanır. Ancak, bilgisayar programcısının yine de monitör ekranını kullanması gerekir. Programcının hala monitör ekranını kullanması gerekmesine rağmen, işletim sistemi bunu yapmasına izin vermiyor. İşletim sistemi, monitör ekranını simüle eden bir pencere sağlar. Windows İşletim Sisteminde bu pencereye Komut İstemi adı verilir. Linux İşletim Sisteminde ve türevlerinde bu pencereye terminal adı verilir.

Okuyucunun Komut İstemi'ni veya Terminal'i nasıl kullanacağını zaten bilmesi beklenir. Bu makale, klavyeden karakterlerin ve dizelerin nasıl okunacağını ve karakterlerin ve dizelerin terminale (veya komut istemine) nasıl gönderileceğini açıklar. Her C++ programcısının bu makalede bilmesi gerekenler.

Klavyeden girdi almak ve terminale çıktı almak için program şu şekilde başlamalıdır:

#Dahil etmek
ad alanı std kullanarak;

Makale İçeriği

  • Standart iostream'in Dar Akış Nesneleri
  • Klavyeden Karakter ve Dize Alma
  • Enter'a basmadan önce Karakterleri Görüntüleme ve Silme
  • Monitöre Karakterler ve Dizeler Gönderme
  • Bir C++ Programı için Argümanlar
  • Sonuç

Standart iostream'in Dar Akış Nesneleri

iostream sınıfı, standart nesneler, cout, cin, cerr ve clog, somutlaştırıldı ve zaten standart kitaplıkta. Programcı onları tekrar başlatmadan kullanır.

cout

main() işlevindeki aşağıdaki ifade, “Bu çıktıdır” metnini gönderir.” terminale:

cout << "This is output.";

cout, standart kitaplıkta önceden başlatılmış bir çıktı iostream nesnesidir. << is the insertion operator, which sent the bytes, “This is output.” to the output stream object, cout. When the statement is executed, the text appears on the screen.

Yukarıdaki ifadeyle, çıktı ifadesinin sağında yeniden görüntülenen komut istemi görünür. sonraki satıra geçmiyor. Aşağıdaki ifadenin sonundaki "endl", ekran tarafından yazdırılan her şeyi bir sonraki satıra zorlayacaktır:

cout << "This is output." << endl;

"endl" önceden tanımlanmış bir değişkendir. Ekran içeriği ayrıca aşağıdakilerle bir sonraki satıra zorlanabilir:

cout << "This is output." << '\n';

'\n' kullanımıyla, metnin tüm satırları hala ekranda hemen görünmeyebilir. "endl" metnin tüm satırını ekrana boşaltır.

Not: cout'a gönderilen bir karakter çift tırnak içindeyken, gönderilen bir karakter tek tırnak içindedir. Bir ifadede bir dizi karakter dizisi ve karakter gönderilebilir, her birinin önünde << . All that will appear in one line at the output if '\n' is not in the series.

Cin

cin, halihazırda somutlaştırılmış ve standart kitaplıkta mevcut olan standart iostream giriş nesnesidir. main() işlevinde aşağıdaki kod parçasını göz önünde bulundurun:

karakter txt[50];
cout << "Enter a word and press Enter:" <> Txt;
cout << txt << endl;

İlk ifade 50 karakterlik boş bir dizi bildirir. İkinci ifade, kullanıcıya bir sonraki ekran satırına bir kelime yazmasını ve Enter tuşuna basmasını söyler. Kullanıcıyı ekranın sonraki satırına metin girmeye zorlayan "endl" kullanımına dikkat edin. Kullanıcı metin yazarken, girilen metin cin nesnesine giderken ekrana yankılanır. Enter tuşuna bastıktan sonra kod bölümündeki üçüncü ifade yürütülür. Bu üçüncü ifade, girilen metni txt değişkenine gönderir. Bu durumda girilen metin 50 karakterden uzun olmamalıdır. Ekstraksiyon operatörünün kullanımına dikkat edin, >>. Son ifade, girilen metni ekranda görüntüler.

cin, klavyeden boşluklarla ayrılmış birden fazla kelime alabilir. Bu kelimelerin farklı değişkenlere çıkarılması gerekecek. Aşağıdaki kod segmenti bunu göstermektedir:

karakter txt[20];
int o;
yüzer ft;
cout << "Enter 3 values and press Enter:" <> txt >> bu >> ft;
cout << txt << " << it << " << ft << endl;

Açıklamaya dikkat edin:

cin >> txt >> it >> ft;

İlk kelime txt'ye, yanındaki kelimeye ve son kelime ft'ye çıkarılır. giriş olsaydı,

bir 25 3.6

o zaman kod segmentinin çıktısı,

bir 25 3.6

sertifika

Aşağıdaki programda bir hata var:

#Dahil etmek
ad alanı std kullanarak;
int ana()

myInt'de;
0 döndür;

main() içindeki ilk ifade doğru değil. Kodu içeren dosyanın adı “temp” ise.cc” ve ortaya çıkan yürütülebilir dosyaya “temp” adı verilir, ardından aşağıdaki g++ komutu derleyici hata mesajını dosyaya gönderir, “error.Txt":

g++ -o sıcaklık sıcaklığı.cc 2>hata.Txt

Eğer dosya "hatası.txt” mevcut değilse, oluşturulacaktı. “2>hata bölümüne dikkat edin.g++ komutunun "txt".

Ekran standart çıktı hedefidir ve aynı zamanda standart hata hedefidir. “2>hata ise.txt” g++ komutundan çıkarılırsa, derleyici hata mesajı hala ekran (monitör) olan standart hata hedefine gönderilir.

Standart çıktı hedefini temsil eden akış nesnesi cout'tur. Standart hata hedefini temsil eden akış nesnesi cerr. Ekrana aşağıdaki gibi bir program çalışma zamanı hatası gönderilebilir:

sertifika << "The error message!" << '\n';

tıkamak

Bir uygulama farklı zamanlarda farklı girdiler alır. Tüm girişler ekranda yeniden görüntülenebilir. Tüm girdiler bir dosyaya kaydedilebilir. Bu günlüğe kaydetme. Standart günlük kaydı hedefi ekrandır. Standart günlük akışı nesnesi bir tıkanıklıktır. Aşağıdaki kod, giriş metnini ekrana yeniden gösterecektir:

karakter txt[50];
cout<<"Enter text and press Enter:"<>Txt;
tıkamak<Giriş metni "input_text" ise, tıkanma ekranda "input_text" öğesini yeniden görüntüler.

Uygulamada, günlük kaydı genellikle bir dosyaya yönlendirilir. Aşağıdaki program bunu göstermektedir:

#Dahil etmek
ad alanı std kullanarak;
int ana()

freopen( "günlük.robots.txt", "w", stdout);
cout << "input_text" << endl;

freopen() işlevinin ve bağımsız değişkenlerinin kullanımına dikkat edin. İlk argümanı günlük dosyasının adıdır. Dosya yoksa, oluşturulur. İkinci argümanı "yaz" için "w" dir. Üçüncü argümanı standart çıktı için stdout'tur. main() işlevindeki ikinci ifade, günlük metnini dosyaya göndermek için cout'u kullanır. Not: Gerçek giriş kodu bu programda gösterilmemiştir.

Klavyeden Karakter ve Dize Alma

Kullanıcı girdi yazarken, karakterler girdi akışı arabelleğine gönderilir ve ekranda görüntülenir. Kullanıcı Enter tuşuna bastığında, tüm karakterler arabellekte bulunur; ayrıca, imleç ekranda aşağıdaki bir sonraki satırın başına gider. Program daha sonra girdi okuma ifadesinden sonra bir sonraki program ifadesine devam eder.

cin nesnesi, bu bölümün ilgili olduğu yöntemlere sahiptir.

İlk Karakteri Okumak

get(char_type&c):
Aşağıdaki kod bölümü, giriş akışı arabelleğinden ilk karakterin nasıl okunacağını gösterir:

karakter ch;
cout << "Input text:" << endl;
Cin.al(ch);
cout << ch << endl;

İlk ifade, atamasız bir karakter bildirir. İkinci ifade, kullanıcıya bir karakter girmesini söyler. Kullanıcı karakter yazıp Enter tuşuna bastığında, üçüncü ifade, karakteri giriş akışı arabelleğinden ch değişkenine kopyalar.

Kullanıcı birden fazla karakter yazsa bile, ilk karakter kod segmenti tarafından alınacaktır.

almak():
get() bağımsız değişken olmadan, ondalık ASCII kodunu döndürür. Aşağıdaki kod segmentini göz önünde bulundurun:

cout << "Input text:" << endl;
cout << cin.get() << endl;

Giriş "asdfg" ise, 'a' için ondalık ASCII kodu olan 97 döndürülür.

get(char_type* s, akış boyutu n)

Kullanıcı bir cümle girdikten ve Enter tuşuna bastıktan sonra, ilk karakterden başlayarak bir dizi karakter cin akışı tamponundan çıkarılabilir. Aşağıdaki kod kullanılabilir:

karakter dizisi[10];
cout << "Input text:" << endl;
Cin.get(str, 10);
cout << str << endl;

Girdi "harika insanlar" ise, çıktı 10 değil 9 karakterden oluşan "harika insanlar" olacaktır. NUL karakteri (\0), get bağımsız değişkeninde onuncu konumu alır. Bu nedenle, str'de 9 karakter olması için depolama boyutunun en az 10 olması ve get() argümanının 11 olması gerekir. Giriş satırının tamamı isteniyorsa, dize depolama numarası en az yazılan karakter sayısı artı 1 olmalıdır. Bu nedenle, tüm satır için 12 karakter yazılırsa, dize (str) depolama boyutu için sayı 13 ve get() argümanı için 13 olmalıdır. Bir boşluğun bir karakter olarak sayıldığını unutmayın.

get(char_type* s, akış boyutu n, char_type sınırlandırma)
Belirli bir karakterin ilk oluşumuyla veya alt dizenin akış boyutuyla, hangisi önce gelirse, sağda sınırlandırılmış bir alt dize çıkarmak mümkündür. Aşağıdaki kodun giriş metni "harika insanlar" ise, o zaman "harika" ayıklanacaktır:

karakter dizisi[30];
cout << "Input text:" << endl;
Cin.get(str, 6, 'o');
cout << str << endl;

Baştan itibaren altıncı konum boşluk karakteridir ve çıkarılan alt dizeyi yalnızca sınırlandırır. Altıncı pozisyon, tek karakterden önce gelir, 'o'. str için depolama boyutunun mümkün olduğunca yüksek olabileceğini unutmayın.

Aşağıdaki kodun giriş metni "harika insanlar" ise, "gr" ayıklanacaktır:

karakter dizisi[30];
cout << "Input text:" << endl;
Cin.get(str, 10, 'e');
cout << str << endl;

'e'nin ilk oluşumu, onuncu pozisyondan önce gelir.

Bir Çizginin Tüm Karakterlerini Alma

Enter tuşuna bastıktan sonra, satıra yazılan tüm karakterler aşağıdaki kodda gösterildiği gibi alınabilir:

cout << "Input text:" << endl;
süre (1)
char ch = (char)cin.almak();
cout << ch;
if (ch == '\n')
kırmak;

(char) ile döküm, her ondalık sayıyı karşılık gelen ASCII karakterine dönüştürür.

dikizlemek()

get() üye işlevleri yalnızca bir sonraki karakteri okumaz; onu akış arabelleğinden kaldırırlar. Ancak, peek() üye işlevi basit bir sonraki karakteri (ilk karakterden başlayarak) arabellekten kaldırmadan okur. Aşağıdaki kodda, her karakter, get() işlevi tarafından kaldırılmadan önce peek() işleviyle okunur. Kullanıcı Enter tuşuna bastıktan sonra olan her şey:

cout << "Input text:" << endl;
süre (1)
char ch = (char)cin.dikizlemek();
cout << ch;
Cin.almak();
if (ch == '\n')
kırmak;

Sonraki karakterler get() tarafından kaldırılmamışsa, peek() yalnızca ilk karakteri okuyor olur ve döngü süresiz olarak yinelenir.

Enter'a basmadan önce Karakterleri Görüntüleme ve Silme

Cin nesnesiyle, işlem yapılmadan önce Enter tuşuna basılması gerektiğine dikkat edin. Peki, karakterlerin yazı yazarken görüntülenmesi ve Enter tuşuna basmadan silinmesi mümkündür. Ancak bu, işletim sistemiyle arayüz oluşturma anlamına gelir. İşletim sistemleri farklıdır. Yani bu, farklı işletim sistemleri için farklı kodlama anlamına gelir. Yani bu konu tamamen farklı bir öğreticiyi hak ediyor - daha sonra bakın.

Monitöre Karakterler ve Dizeler Gönderme

cout nesnesi, halihazırda somutlaştırılmış ve C++ standart kitaplığında bulunan bir çıktı akışı nesnesidir. cout, monitöre karakter ve dizi göndermede kullanılan ana nesnedir. Bu, ekleme operatörü ile yapılır, << . With the cin object, the text is obtained line-by-line. With the cout object, the text is added onto the same line until '\n' or endl is encountered.

Skaler ile sonuçlanan ifadeler, ekleme operatörü için argümanlar olabilir. Operatör, skaleri metne dönüştürür ve metni cout nesne akışına yerleştirir. cout nesnesine metin gönderildiğinde, normalde ekranda görünür (monitör). Ancak, bazen, hemen görünmeyebilir. Metni ekrana zorlamak için, metni ekledikten hemen sonra "endl" özel değerini girin. Bu, metnin ekrana temizlenmesine ve yeni bir satır eklenmesine neden olur. Not: '\n' yalnızca yeni bir satır ekler ancak metni ekrana boşaltmaz.

Aşağıdaki program int, float ve normal text değerlerinin ekrana nasıl yazdırılacağını gösterir:

#Dahil etmek
ad alanı std kullanarak;
int ana()

int = 5;
kayan nokta ft = 63.5;
cout << "The " << it << " items cost $" << ft << " US." << endl;
0 döndür;

Çıktı:

5 ürünün fiyatı 63 dolar.5 ABD.

Aşağıdaki program, bir sınıftan örneklenen bir nesnenin dizesinin nasıl yazdırıldığını gösterir:

#Dahil etmek
ad alanı std kullanarak;
yapı St
char str[11] = "bazı kelimeler";
nesne;
int ana()

cout << obj.str << '\n';
0 döndür;

Çıktı "bazı kelimeler".

Bir C++ Programı için Argümanlar

Programın yürütülmesi main() işlevinden başlar. main() işlevi aslında iki isteğe bağlı parametreye sahiptir. İsteğe bağlı parametrelerle main() işlevinin sözdizimi şöyledir:

int ana (int argc, char *argv[argc])

0 döndür;

Yürütülebilir C++ dosyasının adının “temp” olduğunu varsayalım. Programın ortamından (işletim sistemi) ihtiyaç duyduğu, kullanıcı tarafından yazılan argümanların,,

makaleler 3 kitap kalemi "büyük ev"

Burada 5 argüman var: “makaleler”, “3”, “kitap”, “kalem” ve “büyük ev”

Her biri metin. Bir programın numaralı argümanı metindir. Başka bir deyişle, her argüman bir dizedir. "büyük ev" bir deyim olduğu için tırnak içindedir. Bu programı çalıştırmak için terminal komutu şöyle olacaktır:

./temp makaleleri 3 kitap kalemi "büyük ev"

Dosya sıcaklığının ana dizinde olduğunu varsayarsak. Argümanları virgülle değil, boşluklarla ayırdığını unutmayın.

Şimdi, main() işlevinin söz diziminde, argc, program için argüman sayısı artı 1'dir. Bu durumda, program için 5 argüman vardır. Yani, argc 6'dır. Sözdiziminde, argv[argc], dizelere yönelik bir işaretçi dizisidir. Bu dizi için argv[0]'daki ilk değer derleyici tarafından verilir. Program dosyasının adını gösteren bir işaretçidir. Değerlerin geri kalanı, kullanıcının yazdığı sıradaki program argümanlarının işaretçileridir. Bu dizinin boyutu argc. Bu durumda boyut 1 + 5 = 6'dır.

Derleme sırasında aşağıdaki programın temp olarak adlandırıldığını varsayın:

#Dahil etmek
ad alanı std kullanarak;
int main(int argc, char** argv)

cout << argv[0] << ", " << argv[1] << ", " << argv[2] << ", " << argv[3] << ", " << argv[4] << ", " << argv[5] << endl;
0 döndür;

Burada, "char *argv[argc]" dizisinin "char** argv" olarak bildirildiğini unutmayın.

Bu program terminal komutu ile çalıştırılırsa,

./temp makaleleri 3 kitap kalemi "büyük ev"

o zaman çıktı şöyle olurdu:

./temp, makaleler, 3, kitap, kalem, büyük ev

Dizin yolunun yürütülebilir dosyanın adıyla birlikte verildiğini unutmayın.

Ayrıca, programın çalıştırılması sırasında (programın çağrılması), argc değerinin gönderilmediğine dikkat edin.

Sonuç

iostream sınıfının cout, cin, cerr ve clog olmak üzere dört önemli nesnesi vardır. cin bir girdi nesnesidir, geri kalanı çıktı nesneleridir. Bir program çalışırken, programa giriş, programın çalışmaya başlayacağı zamandan farklıdır. Bir program çalışmaya başladığında, programa giriş, programı çalıştırma komutuyla birleştirilir, boşluklarla ayrılır.

Linux Oyunları Geliştirmek için Ücretsiz ve Açık Kaynaklı Oyun Motorları
Bu makale, Linux'ta 2D ve 3D oyunlar geliştirmek için kullanılabilecek ücretsiz ve açık kaynaklı oyun motorlarının bir listesini kapsayacaktır. Bu tür...
Linux Eğitimi için Tomb Raider'ın Gölgesi
Shadow of the Tomb Raider, Eidos Montreal tarafından yaratılan bir aksiyon-macera oyunu serisi olan Tomb Raider serisine eklenen on ikinci oyundur. Oy...
Linux'ta FPS Nasıl Arttırılır?
FPS'nin kısaltması Saniyedeki Kare Sayısı. FPS'nin görevi, video oynatma veya oyun performanslarındaki kare hızını ölçmektir. Basit bir deyişle, her s...