Вы можете читать символ за символом, пропуская пробелы.
Или вы можете прочитать строку, а затем разбить строку:
std::string rw_text;
std::vector<char> Ac;
std::vector<int> acc;
//...
while (input_file >> rw_text)
{
const char letter = rw_text[0];
const int number = rw_text[1] - '0';
Ac.push_back(letter);
acc.push_back(number);
}
Вы также можете использовать struct
, чтобы объединить ваши буквы и цифры, например pair
.
struct Letter_Number
{
char letter;
int number;
friend std::istream& operator>>(std::istream& input, Letter_Number& ln);
};
std::istream& operator>>(std::istream& input, Letter_Number& ln)
{
input >> ln.letter;
input >> ln.number;
return input;
}
//...
std::vector<Letter_Number> database;
Letter_Number ln;
//...
while (input_file >> ln)
{
database.push_back(ln);
}
Структура будет хранить буквы, связанные с их номерами. В параллельном массиве вы можете иметь разные смещения, иначе пара не выстроится в линию.
Кроме того, имея структуру, буква и число будут находиться в одной строке кэша данных процессора, поэтому ваша программа будет более эффективной. В противном случае процессор должен будет загрузить массив Ac
, получить значение, затем загрузить массив acc
и загрузить символ; тратить время на перезагрузку кеша данных.