Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26

UnicodeString to Array of char c++ builder

05.02.2013, 02:11. Показов 4403. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, каким образом можно посимвольно записать AnsiString в Array char.
Можно так же вариант и из файла.
Если не трудно, то можно ссылки на аналогичную тему.
Пролистал гугл, подходящего не нашел, к сожалению...

Необходимость заключается в том, чтобы перевернуть содержимое текста из компонента memo, либо файла.
Буду благодарен за помощь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.02.2013, 02:11
Ответы с готовыми решениями:

Нельзя преобразовать тип array of char к array of char
ЭТО КАК? function ToWordsMy(Self, ForChange, ToChange: string): sequence of string; extensionmethod; begin var delimiters: array of...

UnicodeString to char
Как конвертировать UnicodeString в char TStringList *text=new TStringList; text->LoadFromFile("C:\\1.txt");

Char* в UnicodeString
В билдере, хочу, чтобы при нажатии на кнопку, введенные в Edit данные сохранялись в файл вот что получилось void __fastcall...

21
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
05.02.2013, 02:15
Цитата Сообщение от Jackbeat Посмотреть сообщение
Подскажите пожалуйста, каким образом можно посимвольно записать AnsiString в Array char.
Можно так же вариант и из файла.
Если не трудно, то можно ссылки на аналогичную тему.
Пролистал гугл, подходящего не нашел, к сожалению...

Необходимость заключается в том, чтобы перевернуть содержимое текста из компонента memo, либо файла.
Буду благодарен за помощь.
для обоих типов доступны операторы произвольного доступа, в чём проблема?
0
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
05.02.2013, 02:23  [ТС]
Цитата Сообщение от abit Посмотреть сообщение
для обоих типов доступны операторы произвольного доступа, в чём проблема?
Можно конкретнее?
Я пробовал и c_str() и t_str(), но похоже не по той тропе пошел...
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
05.02.2013, 02:32
Jackbeat,
for (от начала до конца массива)
array[i] = lastArray[i];
0
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
05.02.2013, 02:54  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
Jackbeat,
for (от начала до конца массива)
array[i] = lastArray[i];

то типа

C++
1
2
3
4
5
6
dl = memo1->Lines->Text.Length(){
for (int i = 1; i <= dl; i++);  
str1[i] = ?  
 
//...
}
на месте вопроса - не понял что именно должно быть.
str1[i] - массив типа char.
0
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
05.02.2013, 02:58
это всё зависит от контекста...
вот набросал вам пример для класса string, который в обратном порядке фигачит в char *

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
int main()
{
 
 string a("0123456789abcdef");
 char * b = new char [a.size()];
 
 for (string::size_type i=0; i!=a.size(); ++i) 
  {b[i]=a[a.size()-i-1];}
 
 cout << b;
 
 delete[] b;
}
если нужно более точно - давайте контекст пример программы что и куда вам надо перевернуть
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
05.02.2013, 03:01
Цитата Сообщение от abit Посмотреть сообщение
char * b = new char [a.size()];
C++
1
char * b = new char [a.size() + 1];
и b[a.size()] = '\0'; в конце
1
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
05.02.2013, 03:02
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
char * b = new char [a.size() + 1];
и b[a.size()] = '\0'; в конце
да, извиняюсь, забыл... давно с char * не имел дел)
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
05.02.2013, 03:03
Цитата Сообщение от Jackbeat Посмотреть сообщение
dl = memo1->Lines->Text.Length(){
for (int i = 1; i <= dl; i++); *
str1[i] = ? *
//...
}
Во первых, индексация в С++ начинается с 0 и цикл должен быть таким:
for (int i = 1; i <= dl; i++)
Во-вторых, ; в конце объявления цикла обозначает пустое тело цикла, нам этого не надо.
1
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
05.02.2013, 13:11  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
Во первых, индексация в С++ начинается с 0 и цикл должен быть таким:
for (int i = 1; i <= dl; i++)
Во-вторых, ; в конце объявления цикла обозначает пустое тело цикла, нам этого не надо.
Это да с нуля нужно начинать, дурная привычка...

Добавлено через 43 секунды
Цитата Сообщение от abit Посмотреть сообщение
да, извиняюсь, забыл... давно с char * не имел дел)
Спасибо!

Добавлено через 10 часов 2 минуты
Цитата Сообщение от abit Посмотреть сообщение
да, извиняюсь, забыл... давно с char * не имел дел)
Правильно ли я понял, что в визуалке я должен писать не:
C++
1
a.size()
а заменить таким образом:
C++
1
a.length()
?
0
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
05.02.2013, 13:16
согласно стандарту
Both string::size and string::length are synonyms and return the same value
так что видимо да

вероятнее всего типа такого:
String a = "Hello World";
a.Length();

обратите внимание, что тип String и метод написаны с большой буквы, вероятно это имеет значение в VS, я не знаю, не сталкивался с VS... в стандарте такое не описано
0
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
05.02.2013, 13:42  [ТС]
Цитата Сообщение от abit Посмотреть сообщение
согласно стандарту


так что видимо да

вероятнее всего типа такого:
String a = "Hello World";
a.Length();

обратите внимание, что тип String и метод написаны с большой буквы, вероятно это имеет значение в VS, я не знаю, не сталкивался с VS... в стандарте такое не описано
Возможно, а вообще это системная тип System::String возможно её решили записать именно таким образом.

Но единственное нет замены String::size_type либо я не досмотрел.

Посмотрю справку. Если что отпишусь.
0
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
05.02.2013, 13:53
Цитата Сообщение от Jackbeat Посмотреть сообщение
Возможно, а вообще это системная тип System::String возможно её решили записать именно таким образом.

Но единственное нет замены String::size_type либо я не досмотрел.

Посмотрю справку. Если что отпишусь.
а судя по всему в микрофте плюнули на все стандарты... я залез на MSDN и увидел картину маслом для Length():
C++
1
2
3
4
public:
property int Length {
    int get ();
}
даже не unsigned, а решительное int
и никакого аналога size_type для String там нет, его смысл - описать наибольшую структуру string, доступную в этой среде исполнения...
так что смело пользуйтесь int вместо size_type, но по хорошему это не правильно
0
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
05.02.2013, 15:50  [ТС]
В общем получилось как-то так, но вывод очень кривой.
C++
1
2
3
4
5
6
char * str1 = new char [str.Length()+1]; // Создаем сивольный массив
for (int i = 0; i < str.Length()-; ++i) {
str1[i] = str[str.Length()-i];
}
 
reg2->Lines->Text = str1;
единственное как сделать так чтобы переход на новую строку при перевороте не становился пустым?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.02.2013, 17:21
Конвертация String в BYTE

Добавлено через 2 минуты
Насчет c_str() в String ( VCL) Нужен код функции c_str()
0
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
06.02.2013, 01:46
Цитата Сообщение от Jackbeat Посмотреть сообщение
В общем получилось как-то так, но вывод очень кривой.
C++
1
2
3
4
5
6
char * str1 = new char [str.Length()+1]; // Создаем сивольный массив
for (int i = 0; i < str.Length()-; ++i) {
str1[i] = str[str.Length()-i];
}
 
reg2->Lines->Text = str1;
единственное как сделать так чтобы переход на новую строку при перевороте не становился пустым?
я постесняюсь спросить, а зачем вам вообще промежуточный char * ? ))) сразу и пихайте в reg2->Lines->Text

что-то типа такого:
C++
1
2
3
   reg2->Lines->Text="";
   for(int i = 0; i<=str.Length(); ++i)
               reg2->Lines->Text += srt[str.Length()-i];
0
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
06.02.2013, 02:17  [ТС]
Цитата Сообщение от abit Посмотреть сообщение
я постесняюсь спросить, а зачем вам вообще промежуточный char * ? ))) сразу и пихайте в reg2->Lines->Text

что-то типа такого:
C++
1
2
3
   reg2->Lines->Text="";
   for(int i = 0; i<=str.Length(); ++i)
               reg2->Lines->Text += srt[str.Length()-i];
Мне нужно перевернуть текст файла и отобразить его в reg.
Хотя я может и мудрю...
0
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
06.02.2013, 02:26
Цитата Сообщение от Jackbeat Посмотреть сообщение
Мне нужно перевернуть текст файла и отобразить его в reg.
Хотя я может и мудрю...
char * это уже реликвия из C, пользоваться им стоит только если прекрасно владеть указателями, десткруторами, следить за памятью и в критических ситуациях... так просто лучше не использовать эту роскошь, ибо дурной стиль для C++
олдфаги могут меня ругать за такие слова, но я бы не рекомендовал всю эту возню...
для вашей задачи вполне хватит контейнера string
1
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
06.02.2013, 02:30  [ТС]
Цитата Сообщение от abit Посмотреть сообщение
char * это уже реликвия из C, пользоваться им стоит только если прекрасно владеть указателями, десткруторами, следить за памятью и в критических ситуациях... так просто лучше не использовать эту роскошь, ибо дурной стиль для C++
олдфаги могут меня ругать за такие слова, но я бы не рекомендовал всю эту возню...
для вашей задачи вполне хватит контейнера string
Странно, но ваш последний метод работает без результата (нет отображения в reg), но все равно спасибо.
Подумаю что можно сделать.
0
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
06.02.2013, 02:34
Цитата Сообщение от Jackbeat Посмотреть сообщение
Странно, но ваш последний метод работает без результата (нет отображения в reg), но все равно спасибо.
Подумаю что можно сделать.
дайте пожалуйста посмотреть на ваш код (отображение в reg2 кстати)

вот набросал в g++ проверить:

C++
1
2
3
4
5
6
string s,a;
   s = "1123";
   a = "";
   for(int i = 0; i<=s.size(); ++i)
       a += s[s.size()-i];
   cout << a;
выход : 3211

убедитесь сами - http://liveworkspace.org/code/4ewjPb$0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2013, 02:34
Помогаю со студенческими работами здесь

UnicodeString в с++ builder XE
чем в типе UnicodeString между собой отличаются c_str(); t_str(); w_str();?

конвертировать UnicodeString в char*
получилось вот так char* aa = (char*)(Edit1-&gt;Text).c_str(); какие есть еще варианты? спасибо

Cannot convert 'UnicodeString' to 'const char *'
делаю локальную сеть, столкнулся с проблемой: addr.sin_addr.s_addr=inet_addr(&quot;192.168.0.3&quot;); как сделать чтобы ip мог задать...

Cannot convert 'unsigned char *' to 'UnicodeString'
Добрый день. Есть кодUCHAR *sstr1=0; SG1-&gt;Cells = ReverseString(sstr1); пишет ошибку E2034 Cannot convert 'unsigned char *' to...

Cannot convert 'UnicodeString' to 'const char *'
При написании программы столкнулся с проблемой. На этих строчках: char sFInName=STR_FILE_IN_NAME, sFOutName=STR_FILE_OUT_NAME,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru