Aquí está mi archivo CSV y su contenido está en hexadecimal.
a3 42 fe 9e 89
a3 43 14 9d cd
a3 43 1e 02 82
a3 43 23 bd 85
a3 43 39 d5 83
a3 43 3e b9 8d
a3 43 3f 44 c0
a3 43 50 c9 49
a3 43 67 29 c8
a3 43 67 43 0d
Solo necesito el penúltimo valor y el código para extraer ese valor es este.
void getvalues(){
std::ifstream data("mydata1.CSV");
int row_count =0;
std::string line;
while(std::getline(data,line))
{
row_count +=1;
std::stringstream lineStream(line);
std::string cell;
int column_count = 0;
while(std::getline(lineStream,cell,' '))
{
column_count+=1;
if ( column_count == 5){
std::cout << std::dec<< cell[0]<< std::endl;
}
}
}
Como estoy leyendo las líneas en una cadena cell
, no puedo hacer ninguna conversión. Al principio intenté envolver el cell
con un int
pero me devuelve el valor ASCII del carácter que es bastante obvio y no debería haberlo hecho.
Solución del problema
Si desea convertir una cadena en un número entero, puede usar std::stoi, que se incluye en el paquete de cadenas. De forma predeterminada, puede usar stoi como tal:
int num = std::stoi(cell)
Sin embargo, dado que queremos analizar un número hexadecimal base 16, debemos usarlo como:
int num = std::stoi(cell, 0, 16)
Artículo rápido sobre esto: https://www.includehelp.com/stl/convert-hex-string-to-integer-using-stoi-function-in-cpp-stl.aspx
No hay comentarios:
Publicar un comentario