Bir dosyadaki yorumları kontrol etmek için karakter ilkesini, dizenin ilk öğesiyle karşılaştırmak istiyorum. Neden bir char kullanıyorsunuz? Bunu, yorum için bir karakter varlığını kabul eden bir işlev haline getirmek istiyorum. Bir dizeye izin vermek istemiyorum çünkü onu tek bir karakter uzunluğunda sınırlamak istiyorum.Karakter Literalını Std ile Karşılaştırma :: C++ içinde String
Bu düşünceyle, karaktere hitap etmenin ve std :: string'in karşılaştırma işlevine iletmenin kolay yolunun olacağını düşündüm. Ancak bu bana istenmeyen sonuçlar veriyor. aşağıdaki gibi
Benim kodudur:
#include <string>
#include <iostream>
int main (int argc, char *argv[])
{
std::string my_string = "bob";
char my_char1 = 'a';
char my_char2 = 'b';
std::cout << "STRING : " << my_string.substr(0,1) << std::endl
<< "CHAR : " << my_char1 << std::endl;
if (my_string.substr(0,1).compare(&my_char1)==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
std::cout << "STRING : " << my_string.substr(0,1) << std::endl
<< "CHAR : " << my_char2 << std::endl;
if (my_string.substr(0,1).compare(&my_char2)==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
std::cout << "STRING : " << my_string << std::endl
<< "STRING 2 : " << "bob" << std::endl;
if (my_string.compare("bob")==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
}
beni verir ...
STRING : b
CHAR : a
NOPE...
STRING : b
CHAR : b
NOPE...
STRING : bob
STRING 2 : bob
WOW!
Neden fonksiyon alt dize ve karakter aynı değildir düşünüyor. Chars ve std :: string vars'ı düzgün bir şekilde karşılaştırmanın en kısa yolu nedir?
kastettiğimi en kısa söylemek (benim soru önlemek yeniden sınıflandırılması .... atlamak için çekinmeyin kısa rant) o belagat kodlama için arzusu dışında. Lütfen, bu bir ev ödevi sorusu DEĞİLDİR. Ben bir kimya mühendisliği doktora adayıyım ve bağımsız araştırmanın bir parçası olarak kod yapıyorum. Son sorularımdan biri de, kullanıcı için msw (aynı zamanda bir snide yorumu) tarafından "ev ödevi" olarak yeniden sınıflandırıldı. Kodum başkaları tarafından yeniden kullanılıyor olabilir veya olmayabilir, ancak okumayı ve sürdürmeyi kolaylaştırmayı deniyorum. Ayrıca, kodumun mümkün olduğu kadar verimli hale getirilmesi konusunda da tuhaf bir istek duyuyorum. Bu nedenle verimlilik ve hünerle ilgili sorular.
if (my_string.substr(0,1).compare(&my_char2)==0)
siz "kandırma" çünkü
Çalışmaz dize:
Ayrıca 'my_string [0]' işlevine erişmeye çalışmadan önce '0