Вот что должен делать мой код:
- Снимите показания сканером штрих-кода, он состоит из 16-17 строк в зависимости от типа цветовой палитры.
- I сегмент то, что я читаю на более мелкие части для обработки, A, B1, B2, C (substr работает отлично)
- Я беру эти подстроки и преобразую их в читаемый формат.
Проблема в том, что я не могу (я не знаю, как) правильно извлечь данные, чтобы можно было сравнить B2 с соответствующим цветовым кодом и чтобы имя цвета отображалось правильно.
Вот образец файла csv, из которого я пытаюсь извлечь данные, он состоит из нескольких строк и двух столбцов:
RAL7016, NEGRO RAL7017, BLANCO RAL7018, AZUL RAL7019, VERDE YW207F, AZULOSCURO Y2208I, BEIGE Y4304I, AMARILLO YX353F, CIELO Y2212I, TURQUESA
Первая строка может содержать 6 или 7 символов, поэтому я спрашиваю в коде, присутствует ли RAL.
Если кто-нибудь может помочь я был бы очень признателен Это. Большое спасибо.
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
main()
{
string scan, A, B1, B2, C;
Init:
int x=0, y=0;
cout << "\nEsperando a scan...";
cin >> scan;
cout << "Codigo:" << scan;
A = scan.substr (0,3);
B1 = scan.substr (3,3);
B2 = scan.substr (6,3);
if (B2 == "RAL") B2 = scan.substr(5,7), C = scan.substr (13,4);
else B2 = scan.substr(5,6), C = scan.substr (12,4);
//Tipo de producto
if (A == "PUE") A = "PUERTA", x=1;
if (A == "PAN") A = "PANEL", x=1;
if (A == "LAC") A = "LACADO", x=1;
if (x=0) A = "PRODUCTO NO AGREGADO AL SISTEMA";
//Tipo de acabado
if (B1 == "BRI") B1 = "BRILLO", x=1;
if (B1 == "TEX") B1 = "TEXTURADO", x=1;
if (B1 == "MAT") B1 = "MATE", x=1;
if (x=0) B1 = "TIPO DE ACABADO NO AGREGADO AL SISTEMA";
//Leer colour desde archivo csv
string colourcode = "blank", colourname = "blank";
ifstream myfile("colourtable.csv");
if(myfile.is_open()){
while(getline(myfile, colourcode, ',') && getline(myfile, colourname)){
if(B2 == colourcode){
if(B2.substr (0,3) == "RAL"){
B2 = colourname.substr(8,20);
}
else B2 = colourname.substr(7,20);
}
}
myfile.close();
}
else B2 = "Falta archivo colourtable.csv";
//Output en pantalla
cout << "\n Producto:" << A << "\n Acabado:" << B1 << "\n colour:" << B2 << "\n N Pedido:" << C << "\n" << "Y = "<< y << "\n";
//colour debug
cout << "\n colourcode:" << colourcode << "\n colourname:" << colourname;
//Output en archivo a pedidos.csv
fstream file;
file.open ("pedidos.csv");
if (file.is_open()){
file << C << "," << B2 << "," << B1;
file.close();
}
else cout << "\n Falta archivo pedidos.csv";
//Reiniciar ciclo
goto Init;
}