Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2023, 23:14   #1
максхи
Пользователь
 
Регистрация: 20.12.2021
Сообщений: 56
По умолчанию Создание и вывод строки MFC ViSt C++

Есть дробное число sum. Надо вывести его в cEdit. Вот так получается char либо string, но для вывода нужен тип CString.
Код:
char* tose(float i, char* trok)
{
	char e;
	int s = 0;
	char sem[7] = { '0', '1', '2', '3', '4', '5', '6' };
	//int no = (int)i;
	float ma;
	float ex = modf(i, &ma);
	int u = (int)ma;
	char* chce = new char;
	char* chdr = new char;
	chce[0] = '0';
	chdr[0] = '0';
	while (u != 0)
	{
		chce[s] = sem[u % 7];
		s += 1;
		u = u / 7;
	}
	for (int t = s; t >= 0; t--)
		s = 0;
	do {
		ex = ex * 7;
		ex = modf(ex, &i);
		chdr[s] = sem[(int)i];
		s = s + 1;
	} while ((ex != 0) && (s < 6));
	char to = strlen(chce) + ',';
	to = to + strlen(chdr);
	return (trok);
}
Код:
if (ero == 0)
	{
	tose(sum, otu);  // 1. string to const char *
	size_t sz;                          // save converted string's length + 1
	wchar_t output[50] = L"";          // return data, result is CString data
	CString cst = output;
	SetDlgItemText(IDC_Bblod,cst);
	}
Как поменять код, чтобы получить необходимый тип или как перевести char/string в него?
максхи вне форума Ответить с цитированием
Старый 26.03.2023, 00:50   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от максхи Посмотреть сообщение
Вот так получается char либо string
Не получается, выкиньте этот код. Выделяете память под ОДИН символ
Код:
	char* chce = new char;
	char* chdr = new char;
а пишите
Код:
chce[s] = sem[u % 7];
дофига

Код:
strlen
работает для нултерминантных строк. Кто и где у вас этот нул записывает?

Цитата:
Сообщение от максхи Посмотреть сообщение
как перевести char/string в него?
https://learn.microsoft.com/en-us/cp...?view=msvc-170
p51x вне форума Ответить с цитированием
Старый 26.03.2023, 10:51   #3
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

Цитата:
Сообщение от максхи Посмотреть сообщение
CString
в зависимости от настроек проекта это либо CStringA (ansi), либо CStringW (utf16) . Определись для начала с кодировкой
Алексей1153 вне форума Ответить с цитированием
Старый 26.03.2023, 10:59   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
Определись для начала с кодировкой
1. Зачем? Как вы сами сказали CString подстроится.
2. Как это решит его проблемы?
p51x вне форума Ответить с цитированием
Старый 26.03.2023, 11:06   #5
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

1 - где это у меня такое написано? Никто никуда не подстроится
2 - когда ТС определится с кодировкой CString, он должен определиться с исходной кодировкой в его const char*

после этого он сможет сконвертировать правильно
Алексей1153 вне форума Ответить с цитированием
Старый 26.03.2023, 11:42   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
1 - где это у меня такое написано? Никто никуда не подстроится
Как изменится алгоритм с CString от кодировки?

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
2 - когда ТС определится с кодировкой CString, он должен определиться с исходной кодировкой в его const char*
Нет у него const char*. У него есть пример алгоритма строк на чара и он хочет заменить их на CString.

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
после этого он сможет сконвертировать правильно
Так не сможет. Память сама не выделится.
p51x вне форума Ответить с цитированием
Старый 26.03.2023, 11:59   #7
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

аа, вононочо. Я не сразу въехал

Цитата:
Сообщение от максхи Посмотреть сообщение
Есть дробное число sum. Надо вывести его в cEdit.
Код:
float sum=0.5;
CString s;
s.Format(TEXT("%f"),sum);
SetDlgItemText(IDC_Bblod,s);

Последний раз редактировалось Алексей1153; 26.03.2023 в 12:02.
Алексей1153 вне форума Ответить с цитированием
Старый 28.04.2023, 09:15   #8
максхи
Пользователь
 
Регистрация: 20.12.2021
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
Код:
float sum=0.5;
CString s;
s.Format(TEXT("%f"),sum);
SetDlgItemText(IDC_Bblod,s);
Для десятичной системы удобно. Для оснований меньше – применимо. Для оснований больше – бесполезно.
максхи вне форума Ответить с цитированием
Старый 28.04.2023, 11:11   #9
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

максхи, никто ж не заставляет. Можно отдельно отформатировать строку любимым способом, а затем вывести в контрол
Алексей1153 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ввод строки в СС16 и перевод в СС10 и вывод введеной строки после перевода с СС10 alexey961 Помощь студентам 1 09.10.2013 10:00
вывод строки mansp Общие вопросы C/C++ 3 08.11.2010 21:30
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Создание и вывод массива Krasi PHP 28 22.02.2010 16:44
INT 10H Вывод строки ADA Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 14.05.2009 09:44