C++ 'da basit bir dizeyi ayrıştırmaya çalışıyorum. Dize, kolon ile bir metin içeren hemen bir boşluk, sonra bir sayı içeren bir metin içerdiğini biliyorum. Dizenin sadece bir kısmını çıkarmak istiyorum. Sadece boşlukta token edemiyorum (sstream ve < < kullanarak) çünkü kolonun önündeki metin içinde boşluk olabilir veya olmayabilir.C++ dilinde bir alt dizgi için std :: string'i nasıl ararsınız?
Bazı örnek dizeleri olabilir:
Toplam disk alanı: 9852465
Boş disk alanı: 6243863
Sektörleri: 4095
ı kullanmak istiyorum standart kütüphane, ancak başka bir çözümünüz varsa bunu da gönderebilirsiniz, çünkü aynı soruya sahip olan kişiler farklı çözümler görmek isteyebilirler.
int value;
if(sscanf(mystring.c_str(), "%*[^:]:%d", &value) == 1)
// parsing succeeded
else
// parsing failed
Açıklama: Bütünlüğü için
'! = -1' KULLANMAYIN! Bunun yerine '! = String :: npos' kullanın. –
Neden olmasın, Konrad, işe yaramıyor mu, verimsiz mi ??? Akıl yürüten beyinler bilmek ister. – paxdiablo
İyi yakalama Konrad! – BobbyShaftoe