Здравствуйте, out, Вы писали:
out>Народ подскажите как привести стороку к желаемому виду?
out>Строка размер выделеных файлов, хотелось что бы было более читабельно и разделять мегабайты килобайты пробелами.
Кусок из моего проекта:
void CFilesList::SeparateThousands(CString& strNumber)
{
USES_CONVERSION;
if (!strNumber.IsEmpty()) {
struct lconv* pLConv = localeconv();
TCHAR chrSep = *A2CT(pLConv->thousands_sep);
if (chrSep != 0) {
int iStart = strNumber.Find(*A2CT(pLConv->decimal_point));
if (iStart < 0) {
iStart = strNumber.GetLength();
}
int iStop = strNumber[0] == *A2CT(pLConv->negative_sign) ||
strNumber[0] == *A2CT(pLConv->positive_sign) ? 1 : 0;
while ((iStart -= *pLConv->grouping) > iStop) {
strNumber.Insert(iStart, chrSep);
}
}
}
}
Здравствуйте, SchweinDeBurg, Вы писали:
out>>Народ подскажите как привести стороку к желаемому виду?
SDB>SDB>void CFilesList::SeparateThousands(CString& strNumber)
SDB>{
SDB> if (!strNumber.IsEmpty()) {
SDB> strNumber[0] == *A2CT(pLConv->positive_sign) ? 1 : 0;
SDB> while ((iStart -= *pLConv->grouping) > iStop) {
SDB> strNumber.Insert(iStart, chrSep);
SDB>
Извращенцы
DWORD Size = 18630138;
DWORD MB = Size / 1000000; // или чисто в Мегабайтах 1048576
DWORD KB = (Size % 1000000) / 1000; // или чисто в КБ 1024
DWORD B = Size % 1000; // или чисто в Байтах 1024
Дальше CString::Format поможет
Здравствуйте, Malokhatko, Вы писали:
M>Извращенцы
А локаль Ваш вариант учитывает?
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>А локаль Ваш вариант учитывает?
Да, Ваш вариант безусловно хорош, но если бы шла реч об оптимизации, то работа со строками все же менее предпочтительна чем оперирование с целыми числами.
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>Здравствуйте, Malokhatko, Вы писали:
SDB>А локаль Ваш вариант учитывает?
так автор про локаль не спрашивал ему нужно разделять пробелами число
Здравствуйте, Malokhatko, Вы писали:
M>Извращенцы
M>M>DWORD Size = 18630138;
M>DWORD MB = Size / 1000000; // или чисто в Мегабайтах 1048576
M>DWORD KB = (Size % 1000000) / 1000; // или чисто в КБ 1024
M>DWORD B = Size % 1000; // или чисто в Байтах 1024
M>Дальше CString::Format поможет
M>
Спасибо, я так собственно и сделал =) после долгих мучений