2016-03-20 13 views
-3

std::string number = "55353" var ve bu dizede kullandığım sayıları (5 ve 3) ayıklamak istiyorum. Bunu yapmak için bir işlev var mı? benim sorun (tür) çözdükDize içinde kullanılan sayılar nasıl çıkarılır?

std::string number(std::to_string(num)); 

std::string mas = "---------";    

int k = 0;         
for (int i = 0; i < number.size(); i++) { 
    char check = number[i];     
    for (int j = 0; j < mas.size(); j++) { 
     if (check == mas[j])     
      break;       
     if (check != mas[j] && check != mas[j+1]) { 
      mas[k] = check;     
      k++;        
      break;       
     }         
    }          
}           

mas.resize(k); mas.shrink_to_fit(); 

std::string mas: Eğer öyleyse, bana o ismini söyle, ben hala artık uzunca bir süre için arama ve oldum ... UPD bulamamışlar std::string number'da kullanılan numaralar,kullanarak std::string'a dönüştürülen bir sayı içerecektir.

+0

Hayır, bunu yapmak için standart bir işlev yoktur. Kendin yazman gerekecek. –

+0

Nasıl yaparım? Çok fazla şey denedim, ama işe yaramıyor. C++ için yeniyim, lütfen yardım edin. –

+0

C++ için yeni olmayı bırakmanın en iyi seçeneği öğrenmek. İlham almak için [The Definitive C++ Kitap Rehberi ve Listesi] 'ne (http://stackoverflow.com/q/388242/1889329) bakın. – IInspectable

cevap

-3

Kontrol dışarı sscanf: Bununla beraber

, sen dizesinden biçimlendirilmiş verileri okuyabilir.

+0

Bu, soruyu uzaktan nasıl ele alıyor? OP formatlanmış verileri okumak istememektedir. OP, bir dizide bulunan bir sayı içinde bulunan farklı rakamları bulmak istemektedir. – IInspectable

0

bu deneyin:

std::string test_data= "55335"; 
char digit_to_delete = '5'; 
unsigned int position = test_data.find(); 
test_data.erase(position, 1); 
cout << "The changed string: " << test_data << "\n"; 

algoritması find için dize içinde (bir karakter gibi) sayısıdır. Konum daha sonra erase dizgesindeki rakam için kullanılır.

0

Sorunuz ev ödevi gibi görünüyor, bu yüzden bize neyi söylemeyi unuttuğunuzu tahmin edebilirim.

mas on - ile başlar. Bir 5'i işaretlerseniz, 6. (!) Çizgisini bir '5' ile değiştirmelisiniz. Bu "6." sadece bir İngiliz eseridir. C++, sıfır değil, sıfır olarak saymaya başlar. Sıfırın konumu, dizinin ilk öğesi olan mas[0]'dur.

Tek zor bir bit, bir dizedeki karakterlerin sayı olmadığını anlamaktır. Onlar için uygun terim "(ondalık) basamaktır". Ve sayısal değerlerini elde etmek için '0' - karakterini sıfırlamanız gerekir. Yani '5' - '0' == 5 - karakter sıfır eksi karakter sıfır numarası 5.