Convertir String en Int Array en C++
-
Utilice las funciones
std::getline
ystd::stoi
para convertirstring
en un arrayint
en C++ -
Utilice las funciones
std::string::find
ystd::stoi
para convertirstring
en un arrayint
en C++ -
Utilice las funciones
std::copy
ystd::remove_if
para convertirstring
en un arrayint
en C++
Este artículo demostrará varios métodos sobre cómo convertir cadenas a matrices int en C++.
Utilice las funciones std::getline
y std::stoi
para convertir string
en un array int
en C++
std::stoi
se usa para convertir valores de cadena en un entero con signo, y toma un argumento obligatorio de tipo std::string
. Opcionalmente, la función puede tomar 2 argumentos adicionales, el primero de los cuales se puede usar para almacenar el índice del último carácter no convertido. El tercer argumento puede especificar opcionalmente la base numérica de la entrada. Tenga en cuenta que asumimos los números separados por comas como la cadena de entrada como el archivo .csv
. Por lo tanto, usamos la función getline
para analizar cada número y luego pasar el valor al stoi
. También almacenamos cada número en el contenedor std::vector
llamando al método push_back
en cada iteración.
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>
using std::cerr;
using std::cout;
using std::endl;
using std::stoi;
using std::string;
using std::stringstream;
using std::vector;
int main(int argc, char *argv[]) {
string text = "125, 44, 24, 5543, 111";
vector<int> numbers;
int num;
stringstream text_stream(text);
string item;
while (std::getline(text_stream, item, ',')) {
numbers.push_back(stoi(item));
}
for (auto &n : numbers) {
cout << n << endl;
}
exit(EXIT_SUCCESS);
}
Producción :
125
44
24
5543
111
Utilice las funciones std::string::find
y std::stoi
para convertir string
en un array int
en C++
Alternativamente, podemos utilizar un método incorporado find
de la clase std::string
para recuperar la posición del delimitador de coma y luego llamar a la función substr
para obtener el número. Luego, el resultado substr
se pasa al stoi
, que a su vez está encadenado al método push_back
para almacenar el número en el vector
. Tenga en cuenta que está la línea después del bucle while
que es necesaria para extraer el último número de la secuencia.
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>
using std::cerr;
using std::cout;
using std::endl;
using std::stoi;
using std::string;
using std::stringstream;
using std::vector;
int main(int argc, char *argv[]) {
string text = "125, 44, 24, 5543, 111";
vector<int> numbers;
size_t pos = 0;
while ((pos = text.find(',')) != string::npos) {
numbers.push_back(stoi(text.substr(0, pos)));
text.erase(0, pos + 1);
}
numbers.push_back(stoi(text.substr(0, pos)));
for (auto &n : numbers) {
cout << n << endl;
}
exit(EXIT_SUCCESS);
}
Producción :
125
44
24
5543
111
Utilice las funciones std::copy
y std::remove_if
para convertir string
en un array int
en C++
Otro método para extraer enteros es usar el algoritmo std::copy
junto con std::istream_iterator
y std::back_inserter
. Esta solución almacena los valores de la cadena en un vector
y los envía al flujo cout
, pero se puede agregar fácilmente la función std::stoi
para convertir cada elemento en un valor int
. Sin embargo, tenga en cuenta que el siguiente código de ejemplo solo almacena los números como valores de cadena.
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>
using std::cerr;
using std::cout;
using std::endl;
using std::stoi;
using std::string;
using std::stringstream;
using std::vector;
int main(int argc, char *argv[]) {
string text = "125, 44, 24, 5543, 111";
vector<string> nums;
std::istringstream iss(text);
copy(std::istream_iterator<string>(iss), std::istream_iterator<string>(),
std::back_inserter(nums));
for (auto &n : nums) {
n.erase(std::remove_if(n.begin(), n.end(), ispunct), n.end());
cout << n << endl;
}
exit(EXIT_SUCCESS);
}
Producción :
125
44
24
5543
111
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++