__int64 TotalNumberOfBytes;
BOOL GetDiskFreeSpaceFlag = GetDiskFreeSpaceEx(
L"c:\\", // directory name
NULL, // bytes available to caller
(PULARGE_INTEGER)&TotalNumberOfBytes, // bytes on disk
NULL // free bytes on disk
);
if (GetDiskFreeSpaceFlag != 0)
{
printf("\n\rОбщий объем: %I64d ( %I64d Mb )", TotalNumberOfBytes, TotalNumberOfBytes / 1024 / 1000);
}
else printf("Отсутствует (GetDiskFreeSpace)");
Выводит:
Общий объем: 249464614912 ( 243617 Mb )
Я хочу сделать:
Общий объем: 249 464 614 912 ( 243617 Mb )
Хочу что бы выводилось с пробелами между разрядами, т.к. там выводятся большие числа, для удобства хочу что бы выводилось поразрядно. Как такое сделать?
Написано, что нужно использовать именно этот __int64
(64-бита) тип для работы с такими большими числами.
Можно сконфигурировать numpunct.thousands_sep
:
#include <cstdint>
#include <iostream>
#include <locale>
struct space_out : std::numpunct<char> {
char do_thousands_sep() const { return ' '; } // separate with spaces
std::string do_grouping() const { return "\3"; } // groups of 3 digit
};
int main()
{
uint64_t u = 249464614912;
std::cout << "default locale: " << u << '\n';
std::cout.imbue(std::locale(std::cout.getloc(), new space_out));
std::cout << "locale with modified numpunct: " << u << '\n';
}
Пример:
$ c++ -std=c++11 *.cc && ./a.out
default locale: 249464614912
locale with modified numpunct: 249 464 614 912
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь разбить файл на 20 частей посимвольноПервый массив Pack - это массив, в котором копируется текст с определенного символа, чтобы в дальнейшем...
Необходимо вывести элементы массива в обратном порядке, при этом передать в функцию последний индекс массиваЧто я делаю не так? Вот мой код...
Как сделать так, чтобы при создании нового процесса, с помощью CreateProcess(), в него передать char* argv[]