Bagaimana saya bisa menghitung jumlah "_"
dalam string "bla_bla_blabla_bla"
?
c++
string
pattern-matching
andre de boer
sumber
sumber
Jawaban:
sumber
std::count
jenis hasiliterator_traits<InputIt>::difference_type
, yang untuk sebagian besar kontainer standarstd::ptrdiff_t
, tidakstd::size_t
.Kodesemu:
EDIT: C ++ contoh kode:
Perhatikan bahwa ini adalah kode untuk digunakan bersama
std::string
, jika Anda menggunakanchar*
, gantis.size()
denganstrlen(s)
.Juga perhatikan: Saya bisa mengerti Anda menginginkan sesuatu "sekecil mungkin", tetapi saya sarankan Anda untuk menggunakan solusi ini sebagai gantinya. Seperti yang Anda lihat, Anda dapat menggunakan fungsi untuk merangkum kode untuk Anda sehingga Anda tidak perlu menulis
for
loop setiap kali, tetapi hanya dapat digunakancount_underscores("my_string_")
di sisa kode Anda. Menggunakan algoritma C ++ yang canggih tentu mungkin di sini, tapi saya pikir itu berlebihan.sumber
Solusi kuno dengan variabel bernama tepat. Ini memberi kode semangat.
Sunting: sekitar 8 tahun kemudian, melihat jawaban ini saya malu saya melakukan ini (meskipun saya membenarkannya sendiri sebagai sodokan pada pertanyaan usaha rendah). Ini beracun dan tidak OK. Saya tidak menghapus pos; Saya menambahkan permintaan maaf ini untuk membantu mengubah atmosfer di StackOverflow. Jadi OP: Saya minta maaf dan saya harap Anda mendapatkan pekerjaan rumah Anda dengan benar terlepas dari trolling saya dan jawaban seperti milik saya tidak membuat Anda enggan berpartisipasi di situs.
sumber
sumber
Sebut saja ... versi Lambda ... :)
Anda perlu beberapa termasuk ... Saya meninggalkan Anda itu sebagai latihan ...
sumber
Menggunakan fungsi lambda untuk memeriksa karakter adalah "_" maka hanya jumlah yang akan bertambah jika bukan karakter yang valid
sumber
[]( char c ){if(c =='_') return true; }
memanggil perilaku yang tidak terdefinisi karena Anda tidak mengembalikan nilai di semua jalur kodeAda beberapa metode std :: string untuk pencarian, tetapi menemukan mungkin adalah yang Anda cari. Jika yang Anda maksud adalah string gaya-C, maka padanannya adalah strchr. Namun, dalam kedua kasus tersebut, Anda juga dapat menggunakan loop for dan memeriksa setiap karakter — loop pada dasarnya adalah apa yang mereka bungkus.
Setelah Anda tahu bagaimana menemukan karakter berikutnya yang diberi posisi awal, Anda terus memajukan pencarian Anda (yaitu menggunakan loop), menghitung saat Anda pergi.
sumber
Menghitung kemunculan karakter dalam string mudah:
sumber
Anda dapat mengetahui kemunculan '_' dalam string sumber dengan menggunakan fungsi string. fungsi find () membutuhkan 2 argumen, string pertama yang kemunculannya ingin kita ketahui dan argumen kedua mengambil posisi awal. Sementara loop digunakan untuk mengetahui kejadian sampai akhir string sumber.
contoh:
sumber
Saya akan melakukan ini:
sumber
Saya akan melakukan sesuatu seperti itu :)
sumber
Mencoba
sumber
sumber