Analizar una secuencia de cadenas separadas por comas en C++
-
Utilice las funciones
std::string::find
ystd::string::erase
para analizar secuencias de cadenas separadas por comas en C++ -
Utilice la función
std::getline
para analizar la secuencia de cadenas separadas por comas
Este artículo mostrará varios métodos sobre cómo analizar una secuencia de cadenas separadas por comas en C++.
Utilice las funciones std::string::find
y std::string::erase
para analizar secuencias de cadenas separadas por comas en C++
El método std::find
es una función incorporada de la clase std::string
y se puede utilizar para encontrar la posición de la subcadena dada. En este caso, se necesita un solo argumento que denota la subcadena que se va a encontrar. Cualquier variable de cadena de varios caracteres se puede inicializar para pasarla como argumento. Aunque, en el siguiente ejemplo, declaramos una sola coma que contiene cadena
. Dado que el método find
devuelve la posición de la subcadena y string::npos
cuando no se encuentra la subcadena, podemos poner la expresión de comparación en un bucle while
que se ejecutará hasta que la expresión se evalúe como verdadera.
También almacenamos la cadena analizada en cada iteración en el contenedor vector
. Luego, se llama al método erase
para eliminar los caracteres antes e incluyendo el primer delimitador de coma encontrado para continuar procesando el mismo objeto string
en la siguiente iteración. Finalmente, enviamos los elementos almacenados en el vector
al flujo cout
.
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::stringstream;
using std::vector;
int main() {
string text = "1,2,3,4,5,6,7,8,9,10";
string delimiter = ",";
vector<string> words{};
size_t pos = 0;
while ((pos = text.find(delimiter)) != string::npos) {
words.push_back(text.substr(0, pos));
text.erase(0, pos + delimiter.length());
}
for (const auto &str : words) {
cout << str << endl;
}
return EXIT_SUCCESS;
}
Producción :
1
2
3
4
5
6
7
8
9
Utilice la función std::getline
para analizar la secuencia de cadenas separadas por comas
La solución anterior no extrae el último número de la secuencia separada por comas. Por lo tanto, podría ser mejor usar el siguiente método usando la función std::getline
en lugar de agregar una verificación condicional en el ejemplo de código anterior. getline
lee caracteres del flujo de entrada dado y los almacena en un objeto string
. La función también toma un tercer argumento opcional para especificar el delimitador por el cual dividir la cadena de entrada. También almacenamos las cadenas extraídas en el contenedor std::vector
en cada iteración para su uso posterior.
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::stringstream;
using std::vector;
int main() {
string text = "1,2,3,4,5,6,7,8,9,10";
char delimiter = ',';
vector<string> words{};
stringstream sstream(text);
string word;
while (std::getline(sstream, word, delimiter)) {
words.push_back(word);
}
for (const auto &str : words) {
cout << str << endl;
}
return EXIT_SUCCESS;
}
Producción :
1
2
3
4
5
6
7
8
9
10
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookArtículo relacionado - C++ String
- Encuentre el primer carácter repetido en una cadena en C++
- Encuentre la subcadena común más larga en C++
- Poner en mayúscula la primera letra de una cadena en C++
- Comparación de cadenas y caracteres en C++
- Eliminar el último carácter de una cadena en C++
- Obtener el último carácter de una cadena en C++