C ile basit bir beşgen kullanmaktır std::string?
C burada AS3 bir geçmişi olan çaylak. Şu anda kitap boyunca yapmak 22**.
Benim anlayışıma göre string
std
ad üyesi olan, o zaman neden aşağıdaki oluşuyor?
#include <iostream>
int main()
{
using namespace std;
string myString = "Press ENTER to quit program!";
cout << "Come up and C me some time." << endl;
printf("Follow this command: %s", myString);
cin.get();
return 0;
}
Program her çalıştığında, myString
çıktı yukarıdaki gibi 3 karakter rastgele bir dize yazdırır.
CEVAP
C anlamda bağımsız değişken kullandığından printf
türü güvenli değil çünkü derleme1. printf
std::string
, C stilinde dize sadece bir için bir seçenek vardır. Kesinlikle ne beklediğini yerine başka bir şey kullanarak size istediğiniz sonuçları vermez. Aslında tanımsız davranış, herhangi bir şey olabilir.
C kullanıyorsun beri bunu düzeltmek için en kolay yolu,, normalde std::string
operatör aşırı yükleme: bu destekler beri std::cout
ile baskı
std::cout << "Follow this command: " << myString;
Nedense C-stil dize ayıklamak için gerekiyorsa, std::string
c_str()
yöntemi sonlandırılmış olduğunu const char *
bir almak için kullanabilirsiniz. Örnek kullanımı:
#include <iostream>
#include <string>
int main()
{
using namespace std;
string myString = "Press ENTER to quit program!";
cout << "Come up and C me some time." << endl;
printf("Follow this command: %s", myString.c_str()); //note the use of c_str
cin.get();
return 0;
}
Eğer printf
ama yazın kasa gibi bir işlevi istiyorsanız, variadic şablonları (C 11, tüm büyük Derleyiciler desteklenen MSVC12) içine bak. 23* *tek bir örnek bulabilirsiniz. Hiç bir şey bilmiyorum standart kütüphanedeki gibi uygulanan var, ama güç olarak, özellikle 24* *olabilir.
[1]: Bu bağımsız değişken herhangi bir sayı geçmesi anlamına gelir, ama işlevi bu argüman sayısı ve türleri anlatmak için kullanır. printf
durumunda %d
gibi kodlanmış tür bilgileri int
anlamı olan bir dize anlamına gelir. Eğer türü veya sayısı hakkında yalan söylersen, işlev, bazı Derleyiciler kontrol ve yalan söylediğin zaman uyarı vermek için yeteneği var, ancak bilmenin bir standart yol vardır.
C ile basit bir beşgen kullanmaktır st...
Nasıl C % işareti'in, basit bir b...
Doğru biçimde, basit bir beşgen kullan...
Nasıl Haskell, basit bir beşgen kullan...
Sol-pad boşluk, basit bir beşgen kulla...