Это должно быть сделано, как описано вами. Тем не менее, стандартные дизайнеры C ++ не очень элегантны. На самом деле, в дизайне C ++ есть много недостатков, даже в C ++ 11 и C ++ 14 есть много недостатков.
Идеальный дизайн C ++ должен быть таким:
1.Для текстового файла:
ifstream fin_txt("input.txt");
int i;
float j;
double k;
fin_txt >> i >> j >> k;
Это будет читать в 3 строки и разбирать на целое, float и double, и сохранять их в i, j и k соответственно.
2.Для двоичного файла:
ifstream fin_txt("input.bin", ios::binary);
int i;
float j;
double k;
fin_txt >> i >> j >> k;
Это будет считывать 4/8 байт (в зависимости от того, является ли int 32-битным или 64-битным), 4-байтовыми и 8-байтовыми двоичными данными и сохранять их в i, j и k соответственно.
К сожалению, текущий дизайн должен сообщить об ошибке для случая 2. Возможно, это может быть достигнуто в C ++ 22.