Но как насчет записи строки, как я могу это сделать? char на char, или есть более быстрый метод? Кроме того, каков должен быть его размер?
вы можете использовать метод c_str () в std :: string, чтобы получить массив символов внутри строкового объекта, как он возвращает const char * и тот же тип в параметрах file.write () . А для размера вы можете получить размер строки, используя метод length () из std :: string. код может быть таким:
string mystr = "hello world";
outfile.write(mystr.c_str(), mystr.length());
А для
outfile.write((const char*)&num1, sizeof(unsigned int));
он что-то сохраняет, но это не ваше целое число, он не сохраняет его. вы можете попробовать это:
outfile.write(reinterpret_cast<char*>(&num1), sizeof(num1));
, и если это не сработает, вам нужно вручную сохранить целое число в массиве символов и записать его в файл. вы можете преобразовать свой int в char, используя char * _itoa (int value, char * str, int base); и для char * str size вы можете выделить столько символов, сколько di git у вас есть в вашем целочисленном.
PS: функция _itoa принадлежит C, поэтому для его использования в C ++ может потребоваться определение _CRT_SECURE_NO_WARNINGS в препроцессорах