logo

Como dividir strings em C++?

Este tópico discutirá como podemos dividir determinadas strings em uma única palavra no Linguagem de programação C++ . Quando dividimos um grupo de palavras ou coleções de strings em palavras únicas, isso é denominado dividir ou divisão da string. Porém, a divisão de strings só é possível com alguns delimitadores como espaço em branco ( ), vírgula (,), hífen (-), etc., tornando as palavras um indivíduo. Além disso, não existe uma função de divisão predefinida para dividir a coleção de strings em uma string individual. Então, aqui aprenderemos os diferentes métodos para dividir strings em uma única em C++.

Como dividir strings em C++

Método diferente para conseguir a divisão de strings em C++

  1. Use a função strtok() para dividir strings
  2. Use a função split() personalizada para dividir strings
  3. Use a função std::getline() para dividir string
  4. Use as funções find() e substr() para dividir a string

Use a função strtok() para dividir strings

strtok(): Uma função strtok() é usada para dividir a string original em pedaços ou tokens com base no delimitador passado.

Sintaxe

 char *ptr = strtok( str, delim) 

Na sintaxe acima, um strtok() possui dois parâmetros, o str , e a eu compartilho .

str : Um str é uma string original a partir da qual a função strtok() divide strings.

bloquear um aplicativo Android

eu compartilho : é um caractere usado para dividir uma string. Por exemplo, vírgula (,), espaço ( ), hífen (-), etc.

Retornar : retorna um ponteiro que faz referência aos próximos tokens de caracteres. Inicialmente, aponta para o primeiro token das strings.

Nota: Uma função strtok() modifica a string original e coloca um caractere NULL ('') na posição do delimitador em cada chamada da função strtok(). Dessa forma, ele pode rastrear facilmente o status do token.

Programa para dividir strings usando a função strtok()

Vamos considerar um exemplo para dividir string em C++ usando a função strtok().

hospedeiro linux

Programa.cpp

 #include #include using namespace std; int main() { char str[100]; // declare the size of string cout &lt;&lt; &apos; Enter a string: &apos; &lt;<endl; cin.getline(str, 100); use getline() function to read a string from input stream char *ptr; declare ptr pointer ' , '); strtok() separate using comma (,) delimiter. cout << 
 split function: endl; while loop check is not null (ptr !="NULL)" { print the token (null, } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter a string: Learn how to split a string in C++ using the strtok() function. Split string using strtok() function: Learn how to split a string in C++ Using the strtok() function. </pre> <h3>Program to use custom split() function to split strings</h3> <p>Let&apos;s write a program to split sequences of strings in C++ using a custom split() function.</p> <p> <strong>Program2.cpp</strong> </p> <pre> #include #include #define max 8 // define the max string using namespace std; string strings[max]; // define max string // length of the string int len(string str) { int length = 0; for (int i = 0; str[i] != &apos;&apos;; i++) { length++; } return length; } // create custom split() function void split (string str, char seperator) { int currIndex = 0, i = 0; int startIndex = 0, endIndex = 0; while (i <= len(str)) { if (str[i]="=" seperator || i="=" endindex="i;" string substr ; substr.append(str, startindex, - startindex); strings[currindex]="subStr;" currindex +="1;" startindex="endIndex" 1; } i++; int main() str="Program to split strings using custom split function." char space split(str, seperator); cout <<' the split is: '; for (int < max; i++) << '
 : ' strings[i]; return 0; pre> <p> <strong>Output</strong> </p> <pre> The split string is: i : 0 Program i : 1 to i : 2 split i : 3 strings i : 4 using i : 5 custom i : 6 split i : 7 function. </pre> <h3>Use std::getline() function to split string</h3> <p>A getline() function is a standard library function of C++ used to read the string from an input stream and put them into the vector string until delimiter characters are found. We can use <strong>std::getline()</strong> function by importing the header file.</p> <p> <strong>Syntax</strong> </p> <pre> getline(str, token, delim); </pre> <p>It has three parameters:</p> <p> <strong>str:</strong> A str is a variable that stores original string.</p> <p> <strong>token:</strong> It stores the string tokens extracted from original string.</p> <p> <strong>delim:</strong> It is a character that are used to split the string. For example, comma (,), space ( ), hyphen (-), etc.</p> <h3>Program to use getline() function to split strings</h3> <p>Let&apos;s consider an example to split strings using the getline() function in C++.</p> <p> <strong>Program3.cpp</strong> </p> <pre> #include #include #include #include using namespace std; int main() { string S, T; // declare string variables getline(cin, S); // use getline() function to read a line of string and store into S variable. stringstream X(S); // X is an object of stringstream that references the S string // use while loop to check the getline() function condition while (getline(X, T, &apos; &apos;)) { /* X represents to read the string from stringstream, T use for store the token string and, &apos; &apos; whitespace represents to split the string where whitespace is found. */ cout &lt;&lt; T &lt;&lt; endl; // print split string } return 0; } </pre> <p> <strong>Output</strong> </p> <pre> Welcome to the JavaTpoint and Learn C++ Programming Language. Welcome to the JavaTpoint and Learn C++ Programming Language. </pre> <h3>Program to split the given string using the getline() function</h3> <p>Let&apos;s consider an example to split a given string in C++ using the getline() function.</p> <p> <strong>Program4.cpp</strong> </p> <pre> #include #include #include #include void split_str( std::string const &amp;str, const char delim, std::vector &amp;out ) { // create a stream from the string std::stringstream s(str); std::string s2; while (std:: getline (s, s2, delim) ) { out.push_back(s2); // store the string in s2 } } int main() { std:: string s2 = &apos;Learn How to split a string in C++&apos;; const char delim = &apos; &apos;; /* define the delimiter like space (&apos; &apos;), comma (,), hyphen (-), etc. */ std::cout &lt;&lt; &apos;Your given string is: &apos; &lt;&lt; s2; std::vector out; // store the string in vector split_str (s2, delim, out); // call function to split the string // use range based for loop for (const auto &amp;s2: out) { std::cout &lt;&lt; &apos;
&apos; &lt;&lt; s2; } return 0; } </pre> <p> <strong>Output</strong> </p> <pre> Your given string is: Learn How to split a string in C++ Learn How to split a string in C++ </pre> <h3>Use find() and substr() function to split strings</h3> <p>Let&apos;s write a program to use find() function and substr() function to split given strings in C++.</p> <p> <strong>Program4.cpp</strong> </p> <pre> #include #include using namespace std; int main() { // given string with delimiter string given_str = &apos;How_to_split_a_string_using_find()_and_substr()_function_in_C++&apos;; string delim = &apos;_&apos;; // delimiter cout &lt;&lt; &apos; Your string with delimiter is: &apos; &lt;&lt; given_str &lt;&lt; endl; size_t pos = 0; string token1; // define a string variable // use find() function to get the position of the delimiters while (( pos = given_str.find (delim)) != std::string::npos) { token1 = given_str.substr(0, pos); // store the substring cout &lt;&lt; token1 &lt;&lt; endl; given_str.erase(0, pos + delim.length()); /* erase() function store the current positon and move to next token. */ } cout &lt;&lt; given_str &lt;&lt; endl; // it print last token of the string. } </pre> <p> <strong>Output</strong> </p> <pre> Your string with delimiter is: How_to_split_a_string_using_find()_and_substr()_function_in_C++ How to split a string using find() and substr() function in C++ </pre> <p>In the above program, we use a <strong>find()</strong> function inside the loop to repeatedly find the occurrence of the delimiter in the given string and then split it into tokens when the delimiter occurs. And the <strong>substr()</strong> function stores the sub-string to be printed. On the other hand, an erase() function stores the current position of the string and moves to the next token, and this process continues until we have got all the split strings.</p> <hr></=></pre></endl;>

Programa para usar a função split() personalizada para dividir strings

Vamos escrever um programa para dividir sequências de strings em C++ usando uma função split() personalizada.

Programa2.cpp

 #include #include #define max 8 // define the max string using namespace std; string strings[max]; // define max string // length of the string int len(string str) { int length = 0; for (int i = 0; str[i] != &apos;&apos;; i++) { length++; } return length; } // create custom split() function void split (string str, char seperator) { int currIndex = 0, i = 0; int startIndex = 0, endIndex = 0; while (i <= len(str)) { if (str[i]="=" seperator || i="=" endindex="i;" string substr ; substr.append(str, startindex, - startindex); strings[currindex]="subStr;" currindex +="1;" startindex="endIndex" 1; } i++; int main() str="Program to split strings using custom split function." char space split(str, seperator); cout <<\' the split is: \'; for (int < max; i++) << \'
 : \' strings[i]; return 0; pre> <p> <strong>Output</strong> </p> <pre> The split string is: i : 0 Program i : 1 to i : 2 split i : 3 strings i : 4 using i : 5 custom i : 6 split i : 7 function. </pre> <h3>Use std::getline() function to split string</h3> <p>A getline() function is a standard library function of C++ used to read the string from an input stream and put them into the vector string until delimiter characters are found. We can use <strong>std::getline()</strong> function by importing the header file.</p> <p> <strong>Syntax</strong> </p> <pre> getline(str, token, delim); </pre> <p>It has three parameters:</p> <p> <strong>str:</strong> A str is a variable that stores original string.</p> <p> <strong>token:</strong> It stores the string tokens extracted from original string.</p> <p> <strong>delim:</strong> It is a character that are used to split the string. For example, comma (,), space ( ), hyphen (-), etc.</p> <h3>Program to use getline() function to split strings</h3> <p>Let&apos;s consider an example to split strings using the getline() function in C++.</p> <p> <strong>Program3.cpp</strong> </p> <pre> #include #include #include #include using namespace std; int main() { string S, T; // declare string variables getline(cin, S); // use getline() function to read a line of string and store into S variable. stringstream X(S); // X is an object of stringstream that references the S string // use while loop to check the getline() function condition while (getline(X, T, &apos; &apos;)) { /* X represents to read the string from stringstream, T use for store the token string and, &apos; &apos; whitespace represents to split the string where whitespace is found. */ cout &lt;&lt; T &lt;&lt; endl; // print split string } return 0; } </pre> <p> <strong>Output</strong> </p> <pre> Welcome to the JavaTpoint and Learn C++ Programming Language. Welcome to the JavaTpoint and Learn C++ Programming Language. </pre> <h3>Program to split the given string using the getline() function</h3> <p>Let&apos;s consider an example to split a given string in C++ using the getline() function.</p> <p> <strong>Program4.cpp</strong> </p> <pre> #include #include #include #include void split_str( std::string const &amp;str, const char delim, std::vector &amp;out ) { // create a stream from the string std::stringstream s(str); std::string s2; while (std:: getline (s, s2, delim) ) { out.push_back(s2); // store the string in s2 } } int main() { std:: string s2 = &apos;Learn How to split a string in C++&apos;; const char delim = &apos; &apos;; /* define the delimiter like space (&apos; &apos;), comma (,), hyphen (-), etc. */ std::cout &lt;&lt; &apos;Your given string is: &apos; &lt;&lt; s2; std::vector out; // store the string in vector split_str (s2, delim, out); // call function to split the string // use range based for loop for (const auto &amp;s2: out) { std::cout &lt;&lt; &apos;
&apos; &lt;&lt; s2; } return 0; } </pre> <p> <strong>Output</strong> </p> <pre> Your given string is: Learn How to split a string in C++ Learn How to split a string in C++ </pre> <h3>Use find() and substr() function to split strings</h3> <p>Let&apos;s write a program to use find() function and substr() function to split given strings in C++.</p> <p> <strong>Program4.cpp</strong> </p> <pre> #include #include using namespace std; int main() { // given string with delimiter string given_str = &apos;How_to_split_a_string_using_find()_and_substr()_function_in_C++&apos;; string delim = &apos;_&apos;; // delimiter cout &lt;&lt; &apos; Your string with delimiter is: &apos; &lt;&lt; given_str &lt;&lt; endl; size_t pos = 0; string token1; // define a string variable // use find() function to get the position of the delimiters while (( pos = given_str.find (delim)) != std::string::npos) { token1 = given_str.substr(0, pos); // store the substring cout &lt;&lt; token1 &lt;&lt; endl; given_str.erase(0, pos + delim.length()); /* erase() function store the current positon and move to next token. */ } cout &lt;&lt; given_str &lt;&lt; endl; // it print last token of the string. } </pre> <p> <strong>Output</strong> </p> <pre> Your string with delimiter is: How_to_split_a_string_using_find()_and_substr()_function_in_C++ How to split a string using find() and substr() function in C++ </pre> <p>In the above program, we use a <strong>find()</strong> function inside the loop to repeatedly find the occurrence of the delimiter in the given string and then split it into tokens when the delimiter occurs. And the <strong>substr()</strong> function stores the sub-string to be printed. On the other hand, an erase() function stores the current position of the string and moves to the next token, and this process continues until we have got all the split strings.</p> <hr></=>

Use a função std::getline() para dividir string

Uma função getline() é uma função de biblioteca padrão de C++ usada para ler a string de um fluxo de entrada e colocá-la na string do vetor até que caracteres delimitadores sejam encontrados. Podemos usar std::getline() função importando o arquivo de cabeçalho.

falha de segmentação (despejo de núcleo

Sintaxe

 getline(str, token, delim); 

Possui três parâmetros:

str: Uma str é uma variável que armazena a string original.

símbolo: Ele armazena os tokens de string extraídos da string original.

compartilhar: É um caractere usado para dividir a string. Por exemplo, vírgula (,), espaço ( ), hífen (-), etc.

tutorial

Programa para usar a função getline() para dividir strings

Vamos considerar um exemplo para dividir strings usando a função getline() em C++.

Programa3.cpp

 #include #include #include #include using namespace std; int main() { string S, T; // declare string variables getline(cin, S); // use getline() function to read a line of string and store into S variable. stringstream X(S); // X is an object of stringstream that references the S string // use while loop to check the getline() function condition while (getline(X, T, &apos; &apos;)) { /* X represents to read the string from stringstream, T use for store the token string and, &apos; &apos; whitespace represents to split the string where whitespace is found. */ cout &lt;&lt; T &lt;&lt; endl; // print split string } return 0; } 

Saída

 Welcome to the JavaTpoint and Learn C++ Programming Language. Welcome to the JavaTpoint and Learn C++ Programming Language. 

Programa para dividir a string fornecida usando a função getline()

Vamos considerar um exemplo para dividir uma determinada string em C++ usando a função getline().

Programa4.cpp

 #include #include #include #include void split_str( std::string const &amp;str, const char delim, std::vector &amp;out ) { // create a stream from the string std::stringstream s(str); std::string s2; while (std:: getline (s, s2, delim) ) { out.push_back(s2); // store the string in s2 } } int main() { std:: string s2 = &apos;Learn How to split a string in C++&apos;; const char delim = &apos; &apos;; /* define the delimiter like space (&apos; &apos;), comma (,), hyphen (-), etc. */ std::cout &lt;&lt; &apos;Your given string is: &apos; &lt;&lt; s2; std::vector out; // store the string in vector split_str (s2, delim, out); // call function to split the string // use range based for loop for (const auto &amp;s2: out) { std::cout &lt;&lt; &apos;
&apos; &lt;&lt; s2; } return 0; } 

Saída

 Your given string is: Learn How to split a string in C++ Learn How to split a string in C++ 

Use as funções find() e substr() para dividir strings

Vamos escrever um programa para usar a função find() e a função substr() para dividir determinadas strings em C++.

o que é ruim

Programa4.cpp

 #include #include using namespace std; int main() { // given string with delimiter string given_str = &apos;How_to_split_a_string_using_find()_and_substr()_function_in_C++&apos;; string delim = &apos;_&apos;; // delimiter cout &lt;&lt; &apos; Your string with delimiter is: &apos; &lt;&lt; given_str &lt;&lt; endl; size_t pos = 0; string token1; // define a string variable // use find() function to get the position of the delimiters while (( pos = given_str.find (delim)) != std::string::npos) { token1 = given_str.substr(0, pos); // store the substring cout &lt;&lt; token1 &lt;&lt; endl; given_str.erase(0, pos + delim.length()); /* erase() function store the current positon and move to next token. */ } cout &lt;&lt; given_str &lt;&lt; endl; // it print last token of the string. } 

Saída

 Your string with delimiter is: How_to_split_a_string_using_find()_and_substr()_function_in_C++ How to split a string using find() and substr() function in C++ 

No programa acima, usamos um encontrar() função dentro do loop para encontrar repetidamente a ocorrência do delimitador na string fornecida e, em seguida, dividi-la em tokens quando o delimitador ocorrer. E a substr() A função armazena a substring a ser impressa. Por outro lado, uma função erase() armazena a posição atual da string e passa para o próximo token, e esse processo continua até obtermos todas as strings divididas.