Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 371

Как передать текст из поля ввода в массив символов?

24.01.2023, 04:07. Показов 5042. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всех приветствую. Когда я передаю строку так:
C++
1
2
char cmd[256];
            snprintf(cmd, sizeof(cmd), "@metaparser \"%s\"", CT2A(textIn));
Вроде всё работает,но когда я это делаю через someEdit.GetWindowTextW(textIn),т.е заношу текст в CString переменную и выполняю вышеуказанный код,у меня некорректно передаётся юникодовская строка. Подскажите пожалуйста,как это исправить? Может это баг,который нужно зарепортить в microsoft? Заранее всем огромное спасибо за помощь.

Добавлено через 1 час 51 минуту
Неужели все знающие visual c++ вымерли,или вымерли только знающие c++ на cyberforum.ru?

Добавлено через 5 часов 41 минуту
Подскажите пожалуйста,хотя бы,как правильно зарепортить этот баг в microsoft,т.к раньше я не репортил багов в microsoft.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2023, 04:07
Ответы с готовыми решениями:

Как передать значение поля ввода в переменную?
<input type="text" name="timeend" class="tcal" value="" /> нужно передать timeend в java script Добавлено через 20 минут ...

Как передать переменную типа char из поля ввода в лист?
//Как передать переменную из типа char TextForList; из поля ввода в лист C++ WINAPI? #include <Windows.h> #include <string> ...

Как выводить и проверять текст из поля ввода?
Есть код, который проверяет введенный текст из поля ввода с текстом который в программе, но задача состоит в следующем: пользователь вводит...

25
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 371
25.01.2023, 20:15  [ТС]
Студворк — интернет-сервис помощи студентам
Огромное Вам спасибо. Что-то подобное есть и у нас в проекте,только Ваша функция,на мой взгляд,лучше. К примеру Вы делаете проверку на utf8.size()<=(size_t)(std::numeric_limit s<int>::max)(). Интересно,для чего это нужно? Очень жаль,что microsoft не предоставил готовые функции. В ndk (android разработка) есть готовые функции для этого.
0
фрилансер
 Аватар для Алексей1153
6510 / 5773 / 1135
Регистрация: 11.10.2019
Сообщений: 15,426
25.01.2023, 20:27
Цитата Сообщение от КАВ Посмотреть сообщение
проверку
аргумент функции MultiByteToWideChar имеет тип int (со знаком), а размер std::string_view - тип size_t (без знака)

Добавлено через 1 минуту
подправил ответ )
0
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 371
26.01.2023, 01:45  [ТС]
Огромное спасибо. А в Вашей последней функции ::MultiByteToWideChar(CP_UTF8, 0, utf8.data(), (int)utf8.size(), utf16.GetBuffer(), utf16.GetLength()); не нужно в конце вызывать utf16.ReleaseBuffer(). Просто я читал,что нужно вызывать эту функцию.

Добавлено через 1 час 49 минут
Огромное Вам спасибо. Вроде в моём коде всё прекрасно работает,хотя неизвестно,что будет дальше. Очень жаль,что в std::string нет (по крайней мере я не нашёл) форматирования строк,поэтому делаю так:
C++
1
            snprintf(cmd, sizeof(cmd), "@metaparser \"%s\"", newCmd.data());
Правда,как я понимаю,функция snprintf не очищает массив символов перед заполнением,а мне это очень нужно,т.к я буду использовать cmd,согласно алгоритму,несколько раз,хотя иногда и будут случаи,когда это будет один раз.

Добавлено через 1 час 45 минут
Прошу прощения,это был мой косяк в коде. Всё нормально очищается. Огромное Вам спасибо за помощь. Правильно ли я понимаю,что при выходе из функции переменная сама освободится,т.е не надо будет явно писать delete string?
1
фрилансер
 Аватар для Алексей1153
6510 / 5773 / 1135
Регистрация: 11.10.2019
Сообщений: 15,426
26.01.2023, 08:16
КАВ, кстати, да, перед 10-й строкой нужен вызов utf16.ReleaseBuffer()

Добавлено через 1 минуту
Цитата Сообщение от КАВ Посмотреть сообщение
в std::string нет (по крайней мере я не нашёл) форматирования строк
есть через std::ostringstream https://en.cppreference.com/w/... rator_ltlt

Добавлено через 43 секунды
Цитата Сообщение от КАВ Посмотреть сообщение
не надо будет явно писать delete string
не надо, само удалится
0
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 371
26.01.2023, 13:45  [ТС]
А в функции,конвертирующей в utf8 ничего освобождать не надо? Кстати почему класс cstring сам не освобождает буфер после выхода из метода? Простите,что задаю такие вопросы,просто я,в основном,пишу на java и python,где насчёт памяти не надо парится,а вот в c и c++ это нужно делать? Интересно,есть ли в студии способ отлаживать утечку памяти в mfc приложениях,не добавляя в проект лишнего кода?
0
фрилансер
 Аватар для Алексей1153
6510 / 5773 / 1135
Регистрация: 11.10.2019
Сообщений: 15,426
26.01.2023, 13:50
КАВ, у CString используется COW, отсюда заморочка с ReleaseBuffer

std::string не использует COW. Всё, что нужно, освободится в деструкторе класса
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.01.2023, 13:50

Как вывести текст из поля ввода (edit) в f1book?
у меня есть функция, которую я ввожу в edit, потом хочу , чтобы эта функция отображалась в f1book. И если не сложно как сделать , чтобы она...

Как считать текст из txt файла и вставить его в компонент webbrowser в поля ввода (авторизация)
help mee

Передать значение поля ввода в запрос
Всем доброго времени суток! Дайте, пожалуйста, идею в реализации задачи: В отчет по оборотам денежных средств (сделан с помощью...

Передать данные из поля ввода в программу
Добрый день! Есть программа для запроса выписок из Росреестра. Программа без GUI. Захотелось сделать интерфейс для ввода...

Текст из поля ввода в список
Решите задачу: напишите программу по следующему описанию. Нажатие Enter в однострочном текстовом поле приводит к перемещению текста из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru