Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Jackbeat
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
#1

UnicodeString to Array of char c++ builder - C++

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

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

Необходимость заключается в том, чтобы перевернуть содержимое текста из компонента memo, либо файла.
Буду благодарен за помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
05.02.2013, 02:15     UnicodeString to Array of char c++ builder #2
Цитата Сообщение от Jackbeat Посмотреть сообщение
Подскажите пожалуйста, каким образом можно посимвольно записать AnsiString в Array char.
Можно так же вариант и из файла.
Если не трудно, то можно ссылки на аналогичную тему.
Пролистал гугл, подходящего не нашел, к сожалению...

Необходимость заключается в том, чтобы перевернуть содержимое текста из компонента memo, либо файла.
Буду благодарен за помощь.
для обоих типов доступны операторы произвольного доступа, в чём проблема?
Jackbeat
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
05.02.2013, 02:23  [ТС]     UnicodeString to Array of char c++ builder #3
Цитата Сообщение от abit Посмотреть сообщение
для обоих типов доступны операторы произвольного доступа, в чём проблема?
Можно конкретнее?
Я пробовал и c_str() и t_str(), но похоже не по той тропе пошел...
MrGluck
Ворчун
Эксперт CЭксперт С++
6430 / 3628 / 450
Регистрация: 29.11.2010
Сообщений: 9,589
05.02.2013, 02:32     UnicodeString to Array of char c++ builder #4
Jackbeat,
for (от начала до конца массива)
array[i] = lastArray[i];
Jackbeat
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
05.02.2013, 02:54  [ТС]     UnicodeString to Array of char c++ builder #5
Цитата Сообщение от 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.
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
05.02.2013, 02:58     UnicodeString to Array of char c++ builder #6
это всё зависит от контекста...
вот набросал вам пример для класса 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;
}
если нужно более точно - давайте контекст пример программы что и куда вам надо перевернуть
MrGluck
Ворчун
Эксперт CЭксперт С++
6430 / 3628 / 450
Регистрация: 29.11.2010
Сообщений: 9,589
05.02.2013, 03:01     UnicodeString to Array of char c++ builder #7
Цитата Сообщение от abit Посмотреть сообщение
char * b = new char [a.size()];
C++
1
char * b = new char [a.size() + 1];
и b[a.size()] = '\0'; в конце
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
05.02.2013, 03:02     UnicodeString to Array of char c++ builder #8
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
char * b = new char [a.size() + 1];
и b[a.size()] = '\0'; в конце
да, извиняюсь, забыл... давно с char * не имел дел)
MrGluck
Ворчун
Эксперт CЭксперт С++
6430 / 3628 / 450
Регистрация: 29.11.2010
Сообщений: 9,589
05.02.2013, 03:03     UnicodeString to Array of char c++ builder #9
Цитата Сообщение от Jackbeat Посмотреть сообщение
dl = memo1->Lines->Text.Length(){
for (int i = 1; i <= dl; i++); *
str1[i] = ? *
//...
}
Во первых, индексация в С++ начинается с 0 и цикл должен быть таким:
for (int i = 1; i <= dl; i++)
Во-вторых, ; в конце объявления цикла обозначает пустое тело цикла, нам этого не надо.
Jackbeat
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
05.02.2013, 13:11  [ТС]     UnicodeString to Array of char c++ builder #10
Цитата Сообщение от MrGluck Посмотреть сообщение
Во первых, индексация в С++ начинается с 0 и цикл должен быть таким:
for (int i = 1; i <= dl; i++)
Во-вторых, ; в конце объявления цикла обозначает пустое тело цикла, нам этого не надо.
Это да с нуля нужно начинать, дурная привычка...

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

Добавлено через 10 часов 2 минуты
Цитата Сообщение от abit Посмотреть сообщение
да, извиняюсь, забыл... давно с char * не имел дел)
Правильно ли я понял, что в визуалке я должен писать не:
C++
1
a.size()
а заменить таким образом:
C++
1
a.length()
?
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
05.02.2013, 13:16     UnicodeString to Array of char c++ builder #11
согласно стандарту
Both string::size and string::length are synonyms and return the same value
так что видимо да

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

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


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

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

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

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

Посмотрю справку. Если что отпишусь.
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
05.02.2013, 13:53     UnicodeString to Array of char c++ builder #13
Цитата Сообщение от 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, но по хорошему это не правильно
Jackbeat
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
05.02.2013, 15:50  [ТС]     UnicodeString to Array of char c++ builder #14
В общем получилось как-то так, но вывод очень кривой.
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;
единственное как сделать так чтобы переход на новую строку при перевороте не становился пустым?
Avazart
7044 / 5221 / 259
Регистрация: 10.12.2010
Сообщений: 22,945
Записей в блоге: 17
05.02.2013, 17:21     UnicodeString to Array of char c++ builder #15
Конвертация String в BYTE

Добавлено через 2 минуты
Насчет c_str() в String ( VCL) Нужен код функции c_str()
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
06.02.2013, 01:46     UnicodeString to Array of char c++ builder #16
Цитата Сообщение от 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];
Jackbeat
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
06.02.2013, 02:17  [ТС]     UnicodeString to Array of char c++ builder #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.
Хотя я может и мудрю...
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
06.02.2013, 02:26     UnicodeString to Array of char c++ builder #18
Цитата Сообщение от Jackbeat Посмотреть сообщение
Мне нужно перевернуть текст файла и отобразить его в reg.
Хотя я может и мудрю...
char * это уже реликвия из C, пользоваться им стоит только если прекрасно владеть указателями, десткруторами, следить за памятью и в критических ситуациях... так просто лучше не использовать эту роскошь, ибо дурной стиль для C++
олдфаги могут меня ругать за такие слова, но я бы не рекомендовал всю эту возню...
для вашей задачи вполне хватит контейнера string
Jackbeat
1 / 1 / 0
Регистрация: 20.03.2012
Сообщений: 26
06.02.2013, 02:30  [ТС]     UnicodeString to Array of char c++ builder #19
Цитата Сообщение от abit Посмотреть сообщение
char * это уже реликвия из C, пользоваться им стоит только если прекрасно владеть указателями, десткруторами, следить за памятью и в критических ситуациях... так просто лучше не использовать эту роскошь, ибо дурной стиль для C++
олдфаги могут меня ругать за такие слова, но я бы не рекомендовал всю эту возню...
для вашей задачи вполне хватит контейнера string
Странно, но ваш последний метод работает без результата (нет отображения в reg), но все равно спасибо.
Подумаю что можно сделать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2013, 02:34     UnicodeString to Array of char c++ builder
Еще ссылки по теме:

C++ Char array
C++ Двумерный массив <array>. const int value = array.size(); value не константа?
Присвоить значения переменных в массив Array (class Array в Turbo C++) C++
конвертировать UnicodeString в char* C++
C++ Ошибка char-array initialized from wide string

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

Или воспользуйтесь поиском по форуму:
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
06.02.2013, 02:34     UnicodeString to Array of char c++ builder #20
Цитата Сообщение от 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
Yandex
Объявления
06.02.2013, 02:34     UnicodeString to Array of char c++ builder
Ответ Создать тему
Опции темы

Текущее время: 13:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru