Программирование. Принципы и практика использования C++ Исправленное издание, стр. 158
int n = 123;string s = "123";В первом случае число
12343212312345123"12345"string
Когда мы используем символьное представление, то какой-то символ должен служить признаком конца числа, так же как на бумаге, когда мы записываем одно число 123456 и два числа 123 456. На бумаге для разделения чисел мы используем пробел. То же самое можно сделать в памяти компьютера.

Разница между хранением двоичного представления фиксированного размера (например, в виде типа
intstringiostreamistreamostreamistreamostreamios_base::binaryint main(){ // открываем поток istream для двоичного ввода из файла: cout << "Пожалуйста, введите имя файла для ввода \n"; string name; cin >> name; ifstream ifs(name.c_str(),ios_base::binary); // примечание: опция // binary сообщает потоку, чтобы он ничего не делал // с байтами if (!ifs) error("Невозможно открыть файл для ввода ", name); // открываем поток ostream для двоичного вывода в файл: cout << "Пожалуйста, введите имя файла для вывода \n"; cin >> name; ofstream ofs(name.c_str(),ios_base::binary); // примечание: опция // binary сообщает потоку, чтобы он ничего не делал // с байтами if (!ofs) error("Невозможно открыть файл для ввода ",name); vector<int> v; // чтение из бинарного файла: int i; while (ifs.read(as_bytes(i),sizeof(int))) // примечание: // читаем байты v.push_back(i); // ...что-то делаем с вектором v... // записываем в двоичный файл: for(int i=0; i<v.size(); ++i) ofs.write(as_bytes(v[i]),sizeof(int)); // примечание: // запись байтов return 0;}Мы открыли эти файлы с помощью опции
ios_base::binaryifstream ifs(name.c_str(), ios_base::binary);ofstream ofs(name.c_str(), ios_base::binary);В обоих вариантах мы выбрали более сложное, но часто более компактное двоичное представление. Если мы перейдем от символьно-ориентированного ввода-вывода к двоичному, то не сможем использовать обычные операторы ввода и вывода
>><<"asdf"asdf123123binarybinaryА что вообще мы могли бы сделать с типом
intifs.read(as_bytes(i),sizeof(int)) // чтение байтов