Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/163: Рейтинг темы: голосов - 163, средняя оценка - 4.58
104 / 94 / 14
Регистрация: 20.06.2010
Сообщений: 966
Записей в блоге: 16

AnsiString в Char

05.02.2011, 11:32. Показов 35530. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как строку AnsiString перенести в массив char?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.02.2011, 11:32
Ответы с готовыми решениями:

Ansistring в unsigned char
Как из AnsiString перевести в unsigned char определенной длины? unsigned char inBuf; хочу присвоить ему данные из Edit.

Преобразование AnsiString в char
Есть следующий код: AnsiString s; char *str; //strcpy(str,s.c_str()); fprintf (f,s.c_str()); В...

Массив char в AnsiString
Здравствуйте. Пишу на 6ом билдере. Столкнулся со следующей проблемой. Есть некий массив символов: const count = 20; char *array = new...

17
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
05.02.2011, 12:27
можно так поизвращаться:
C++
1
2
3
4
AnsiString text = "text";
char* mas = new char[text.Length() + 1];
strcpy(mas, text.c_str());
mas[text.Length()] = '\0';
0
104 / 94 / 14
Регистрация: 20.06.2010
Сообщений: 966
Записей в блоге: 16
05.02.2011, 13:43  [ТС]
а по другому не как?
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
05.02.2011, 15:23
AnsiString text;
text.c_str(); <- char
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.02.2011, 15:36
Вам - в массив , или просто каждую буквочку отдельно ?
0
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
05.02.2011, 16:27
если отойти немного от чистого с)
C++
1
2
3
4
5
6
7
8
9
10
11
AnsiString a;
int len=a.Lenght();
if (len<=0) break;
 
char *char_mass=new char[len];
for (int i=0;i<len;i++)
{
   char_mass[i]=*a.SubString(i+1,1).c_str();
}
 
delete[] char_mass;
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.02.2011, 18:27
Цитата Сообщение от sitesv Посмотреть сообщение
если отойти немного от чистого с)
- здесь, преимущественно, с++ ...
0
104 / 94 / 14
Регистрация: 20.06.2010
Сообщений: 966
Записей в блоге: 16
05.02.2011, 18:33  [ТС]
Ну изначельно я хотел сделать как-то так:
C++
1
2
AnsiString text="test.exe";
system("taskkill /IM " + text) ;
Но выдавало две ошибки:
[C++ Error] Unit1.cpp(22): E2034 Cannot convert 'AnsiString' to 'const char *'
[C++ Error] Unit1.cpp(22): E2342 Type mismatch in parameter '__command' (wanted 'const char *', got 'AnsiString')
пробую так
C++
1
2
3
4
5
AnsiString text = "text";
char* mas = new char[text.Length() + 1];
strcpy(mas, text.c_str());
mas[text.Length()] = '\0';
system("taskkill /IM " + mas) ;
Но выдает ошибку Invalid pointer addition.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.02.2011, 18:55
сложно как-то все у вас, и зачем в команде "taskkill" символ окончания строки ...
первый раз нормально было -
C++
1
2
AnsiString text="test.exe";
system("taskkill /IM " text.c_str()) ;
- только , кажись, для файла нужно полный путь указать
C++
1
AnsiString text="C:\\test.exe"
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
05.02.2011, 19:42
C++
1
system( ("taskkill /IM " + text).c_str() ) ;
0
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
05.02.2011, 19:45
Цитата Сообщение от kzru_hunter Посмотреть сообщение
system( ("taskkill /IM " + text).c_str() ) ;
и где же тут массив char? что за хитрый способ?))
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
05.02.2011, 19:50
sitesv, ему надо завершить процесс, вот я пришел код с условием, что text типа AnsiString.
bodrich, если такие проблемы в C++, то советую начать с AutoIt, там всё просто, не нужно никаких преобразований типов, в добавок есть справка, в которой подробно с примерами описаны функции.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.02.2011, 21:05
Цитата Сообщение от sitesv Посмотреть сообщение
и где же тут массив char? что за хитрый способ?))
- это стандартный способ - c_str() и есть приведение AnsiString к типу const char , кроме этого есть w_str() и t_str() для WideChar / UnicodeString .
0
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
05.02.2011, 21:12
Цитата Сообщение от LK Посмотреть сообщение
это стандартный способ
просто в вопросе написано про массив char, а тут он явным образом не фигурирует)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.02.2011, 21:24
Цитата Сообщение от sitesv Посмотреть сообщение
просто в вопросе написано про массив char, а тут он явным образом не фигурирует)
- потому что c_str() - это функция, которая возвращает указатель на константную строку (const char* или const wchar_t*).
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
05.02.2011, 21:24
А разве метод c_str() не возвращает массив char'ов?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.02.2011, 21:34
Бьерн Страуструп - Язык программирования С++. Главы 2-4
Страница 14. Массивы
2.3.6 Массивы
Для типа T T[size] является типом "массива из size элементов типа T". Элементы индексируются от 0 до size-1. Например:
C++
1
2
3
4
float v[3];   // массив из трех чисел с плавающей точкой:
    //v[0], v[1], v[2]
int a[2][5];  // два массива, из пяти целых каждый
char* vpc;    // массив из 32 символьных указателей
Можно следующим образом записать цикл, в котором печатаются целые значения прописных букв:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
extern "C" int strlen(const char*);  // из <string.h>
char alpha[] = "abcdefghijklmnopqrstuvwxyz";
main()
{
  int sz = strlen(alpha);
  for (int i=0; i<sz; i++) {
 char ch = alpha[i];
 cout << '\''<< ch << '\''
 << " = " <<int(ch)
 << " = 0" << oct(ch)
 << " = 0x" << hex(ch) << '\n';
   }
}
Здесь функции oct() и hex() выдают свой параметр целого типа в восьмеричном и шестнадцатеричном виде соответственно. Обе функции описаны в <iostream.h>. Для подсчета числа символов в alpha
используется функция strlen() из <string.h>, но вместо нее можно было использовать размер массива alpha ($$2.4.4). Для множества символов ASCII результат будет таким:
C++
1
2
3
'a' = 97 = 0141 = 0x61
'b' = 98 = 0142 = 0x62
'c' = 99 = 0143 = 0x63
Отметим, что не нужно указывать размер массива alpha: транслятор установит его, подсчитав число символов в строке, заданной в качестве инициализатора. Задание массива символов в виде строки инициализатора
- это удобный, но к сожалению, единственный способ подобного применения строк. Присваивание строки массиву недопустимо, поскольку в языке присваивание массивам не определено, например:
C++
1
2
char v[9];
 v = "a string";// ошибка
Классы позволяют реализовать представление строк с большим набором операций (см. $$7.10).
Очевидно, что строки пригодны только для инициализации символьных массивов; для других типов приходится использовать более сложную запись. Впрочем, она может использоваться и для символьных массивов. Например:
C++
1
2
3
4
int  v1[] = { 1, 2, 3, 4 };
 int  v2[] = { 'a', 'b', 'c', 'd' };
 char v3[] = { 1, 2, 3, 4 };
 char v4[] = { 'a', 'b', 'c', 'd' };
Здесь v3 и v4 - массивы из четырех (а не пяти) символов; v4 не оканчивается нулевым символом, как того требуют соглашение о строках и большинство библиотечных функций. Используя такой массив char мы сами готовим почву для будущих ошибок.
Многомерные массивы представлены как массивы массивов. Однако нельзя при задании граничных значений индексов использовать, как это делается в некоторых языках, запятую. Запятая - это особая операция для перечисления выражений (см. $$3.2.2). Можно попробовать задать такое описание:
C++
1
int bad[5,2];    // ошибка
или такое
C++
1
2
3
int v[5][2];
 int bad = v[4,1]; // ошибка
 int good = v[4][1];    // правильно
Ниже описывается массив из двух элементов, каждый из которых является, в свою очередь, массивом из 5 элементов типа char:
C++
1
 char v[2][5];
В следующем примере первый массив инициализируется пятью первыми буквами алфавита, а второй - пятью младшими цифрами.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char v[2][5] = {
 { 'a', 'b', 'c', 'd', 'e' },
 { '0', '1', '2', '3', '4' }
 };
 
main() {
  for (int i = 0; i<2; i++) {
  for (int j = 0; j<5; j++)
  cout << "v[" << i << "][" << j
  << "]=" << v[i][j] << "  ";
  cout << '\n';
 }
}
В результате получим:
C++
1
2
v[0][0]=a v[0][1]=b v[0][2]=c v[0][3]=d v[0][4]=e
v[1][0]=0 v[1][1]=1 v[1][2]=2 v[1][3]=3 v[1][4]=4
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
05.02.2011, 23:31
bodrich,
Цитата Сообщение от bodrich Посмотреть сообщение
system("taskkill /IM " + mas) ;
а с каких пор заработала конкатенация массивов символов?

Цитата Сообщение от kzru_hunter Посмотреть сообщение
А разве метод c_str() не возвращает массив char'ов?
нет, он возвращает const char*
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.02.2011, 23:31
Помогаю со студенческими работами здесь

Копирование из char* в AnsiString
Имеется AnsiString S, char* C (большого размера массив), и int L - длинна слова в массиве C. Надо записать в строку S из строки C слово...

Конвертация из unsigned char в AnsiString
Приветствую всех. У меня возникла проблемка такая, в проге я работают с unsigned char, но так же мне надо отображать эти же строки в поле...

Работа с типами Char и Ansistring
Здравствуйте, уважаемые форумчане! Прошу помочь мне с составление программного кода для следующих задач. (Console Wizard) 1. Даны...

Как преобразовать AnsiString в char?
Подскажите пожалуйста как можно преобразовать AnsiString в char

Преобразовать AnsiString в массив char
Здравствуйте программисты. Недавно у меня возникла необходимость воспользоваться классом для работы с файлами fstream. Но проблема в том...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru