Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Laksanakan fungsi strtok() dalam C++

Laksanakan fungsi strtok() dalam C++

WBOY
WBOYke hadapan
2023-09-01 19:21:041318semak imbas

Fungsi

Laksanakan fungsi strtok() dalam C++

strtok() ialah salah satu fungsi yang paling biasa digunakan dalam C++. Menggunakan pembatas sebagai panduan, fungsi ini boleh membahagikan teks kepada ketulan atau token yang lebih kecil. Bekerja dengan rentetan dalam C++ adalah mudah terima kasih kepada fungsi strtok(). Artikel ini akan menerangkan fungsi strtok() secara terperinci, termasuk definisi, sintaks, algoritma dan pelbagai strategi pelaksanaannya. Sesuatu yang perlu diingat ialah fungsi strtok mempunyai beberapa batasan dan potensi kelemahan. Sebagai contoh, ia tidak boleh digunakan dengan const atau rentetan baca sahaja kerana ia secara langsung menukar rentetan asal. Kes tepi dan input yang tidak dijangka, seperti rentetan kosong atau pembatas yang berulang dalam urutan, juga boleh menjadi sukar untuk dikendalikan.

Walaupun kekurangan ini, fungsi ini kekal sebagai alat yang berguna untuk banyak pengaturcara dan sering digunakan dalam pelbagai jenis aplikasi, termasuk pemprosesan teks, penghuraian data dan protokol rangkaian. Ia adalah fungsi yang fleksibel dan berkuasa yang boleh memudahkan banyak tugas pengaturcaraan biasa dengan ketara.

Ciri-ciri fungsi strtok()

Untuk memisahkan rentetan kepada ketulan atau token yang lebih kecil berdasarkan pembatas, gunakan fungsi strtok() dalam C++ Penunjuk kepada rentetan yang perlu ditoken dan rentetan dengan aksara pembatas ialah dua input untuk fungsi A penunjuk kepada token pertama rentetan dikembalikan oleh fungsi Selagi masih ada token dalam rentetan, panggilan berturut-turut ke fungsi dengan parameter rentetan yang sama akan mengembalikan token tambahan dan ini berlaku dengan bantuan penunjuk NULL dalam gelung sementara. . Apabila memanggil fungsi'strtok()' sekali lagi, membekalkan NULL sebagai argumen pertama mengarahkan fungsi untuk menyambung dari tempat ia berhenti dengan tokenisasi rentetan yang sama.

Apabila fungsi'strtok()' pertama kali dipanggil dengan rentetan input sebagai argumen pertama, ia mula mencari token pertama dalam rentetan pada permulaan Apabila ia mencari token awal, ia menamatkannya dengan menggantikan pembatas itu datang selepasnya dengan aksara nol (''0''). When'strtok()' digunakan sekali lagi dengan penunjuk NULL sebagai hujah pertama, fungsi mengambil tempat ia berhenti dengan tokenisasi rentetan sebelumnya, iaitu ialah, terus selepas token sebelumnya Ia terus mencari penampilan seterusnya

Tatabahasa

Char* strtok(char* str, const char* delimiters);  

Di mana

- `str` ialah penunjuk kepada rentetan untuk ditandakan

- `pembatas` ialah rentetan yang mengandungi aksara pembatas.

Algoritma

    . .
  • Langkah 2
  • − Apabila fungsi dipanggil buat kali pertama, rentetan input diluluskan sebagai argumen pertama, dan rentetan pembatas diluluskan sebagai argumen kedua
  • Langkah 3
  • − Fungsi ini mencari rentetan input untuk kejadian pertama bagi mana-mana aksara pembatas
  • Langkah 4
  • − Apabila ia menemui aksara pembatas, ia menggantikannya dengan penamat nol (`'
  • Langkah 5 - Kali seterusnya fungsi dipanggil, parameter pertama hendaklah ditetapkan kepada `NULL` dan bukannya rentetan input asal. Ini memberitahu fungsi untuk meneruskan di mana ia berhenti dan mencari token seterusnya dalam rentetan.

  • Langkah 6 − Fungsi terus mencari aksara pembatas dan mengembalikan penunjuk ke permulaan token seterusnya sehingga ia mencapai penghujung rentetan, di mana ia mengembalikan `NULL`

  • Pendekatan untuk diikuti

    Kaedah 1
  • − Program yang menggunakan fungsi gelung dan strtok() dan pemisah tunggal untuk memaparkan kod.

Kaedah 2

- Program yang menggunakan fungsi gelung dan strtok() dan berbilang pemisah untuk memaparkan kod Kaedah 1

Di bawah ialah program untuk menunjukkan kod menggunakan gelung dengan fungsi strtok() dan delimeter tunggal Contoh ini menunjukkan cara menggunakan strtok untuk membahagikan rentetan mengikut ruang. Rentetan input str mula-mula dihantar ke strtok bersama-sama dengan pembatas " ". Panggilan pertama ke strtok mengembalikan penunjuk kepada token pertama ("Hai,"), yang dicetak ke konsol. strtok meneruskan tokenisasi rentetan sehingga tiada lagi token dan setiap token dicetak ke konsol. Sila ambil perhatian bahawa untuk panggilan berikutnya ke strtok, kami menghantar penuding nol sebagai parameter pertama, menunjukkan bahawa kami ingin meneruskan tokenisasi rentetan asal

Contoh 1

#include <iostream>
#include <cstring> // Include the header for strtok()
using namespace std;

int main() {
   char str[] = "Hi, this topic tells about strtok() function";
   char* ptr;
   ptr = strtok(str, " ");
   while (ptr != NULL) {
      cout << ptr << endl;
      ptr = strtok(NULL, " ");
   }
   return 0;
}

Output

Hi, 
this  
topic 
tells  
about 
strtok()  
function 

Kaedah 2

Di bawah ialah program untuk memaparkan kod dengan berbilang pembatas menggunakan fungsi gelung dan strtok(). Di bawah ialah kod program untuk perkara yang sama.

The '|' and'' (space) delimiters are used to tokenize the string "The boy|is|standing|with his pet|lazy dog." in this example. Once with the string as the first argument and the characters '|' and'' as the second argument, the strtok() method is called twice. Following calls return the remaining tokens, the initial call returns the first token, "The." Until all tokens have been extracted, the loop keeps running.

Example-2

#include <iostream> 
#include <cstring> 
 
int main() { 
   char str[] = "The boy|is|standing|with his pet|lazy dog."; 
   char* token = strtok(str, "| "); 
   while (token != NULL) { 
      std::cout << token << std::endl; 
      token = strtok(NULL, "| "); 
   } 
   return 0; 
} 

Output

The 
boy 
is 
standing 
with 
his 
pet 
lazy 
dog.

结论

总之,C++的strtok函数是一个有用且有效的用于操作字符串的工具。尽管它有一些重要的限制和潜在的缺点,但它仍然是解析和处理文本数据的常见选择,并且对于任何编码人员来说都是一个有用的工具。

Atas ialah kandungan terperinci Laksanakan fungsi strtok() dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam