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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2011, 04:54   #1
Psayker
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 42
По умолчанию из AnsiString в char*

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

Код:
AnsiString str1, str2, str3;
 int i;
 str1 = Memo1->Lines->GetText();
 str1 = str1.LowerCase();
 str1 = str1 + " ";
 i = str1.Pos(" ");
 while (i!=0){
  str3 = str1.SubString(1,i-1);
  str1.Delete(1,i);
  if (str3[i-1]=='а'||str3[i-1]=='е'||str3[i-1]=='ё'||str3[i-1]=='и'||str3[i-1]=='о'||str3[i-1]=='у'||str3[i-1]=='э'||str3[i-1]=='ю'||str3[i-1]=='я') ListBox1->Items->Add(str3);
  else if (str3[i-1]=='б'||str3[i-1]=='в'||str3[i-1]=='г'||str3[i-1]=='д'||str3[i-1]=='ж'||str3[i-1]=='з'||str3[i-1]=='к'||str3[i-1]=='л'||str3[i-1]=='м'||str3[i-1]=='н'||str3[i-1]=='п'||str3[i-1]=='р'||str3[i-1]=='с'||str3[i-1]=='т'||str3[i-1]=='ф'||str3[i-1]=='х'||str3[i-1]=='ц'||str3[i-1]=='ч'||str3[i-1]=='ш'||str3[i-1]=='щ'||str3[i-1]=='ь')ListBox2->Items->Add(str3);
  else ;
  i = str1.Pos(" ");
как вот сделать не AnsiString'ом,а Char*?
Psayker вне форума Ответить с цитированием
Старый 21.06.2011, 07:25   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Чем Вам AnsiString не нравится? Если делать с char, код вырастет раза в три.
Для неопределённых по размеру строк, придётся использовать динамические массивы, возиться с выделением память. В общем наживёте себе геморроя.
А, вот с оператором if, Вы перемудрили. Это делается так:
Код:
AnsiString litter = "аеёиоуэюя";
for(int j=1; j<litter.Length(); j++)
{
  if(str3[i-1]==litter[j]) 
  {
    ListBox1->Items->Add(str3);
    break;
  }
}
Но лучше организовать это дело в функцию:
Код:
AnsiString __fastcall TForm1::Word(const int index, const AnsiString str, const AnsiString litter)
{
  AnsiString st = str;
  for(int j=1; j<litter.Length(); j++) if(st[index]==litter[j]) return st;
  st = "";
  return st;
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 21.06.2011 в 07:38.
Smitt&Wesson вне форума Ответить с цитированием
Старый 21.06.2011, 09:10   #3
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

Код:
AnsiString str("XAM");
char* temp = str.c_str();
нет ?
Guy вне форума Ответить с цитированием
Старый 21.06.2011, 10:44   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Guy Посмотреть сообщение
Код:
AnsiString str("XAM");
char* temp = str.c_str();
нет ?
Оно самое, но сложности начнутся в циклах. И при выделении слов из предложения.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 21.06.2011, 11:07   #5
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

Прочитал не верно я...

А так это как я понял не реализуемо. Так как в типе "char" нету русских букв...
Guy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с программой. Нельзя преобразовать тип set of char к char Lasso Помощь студентам 5 07.06.2011 12:03
Как сконвертировать AnsiString в char * ? Zibi Общие вопросы C/C++ 11 12.07.2009 13:24
C++ Builder AnsiString преобразовать в Char ROD C++ Builder 3 07.04.2009 12:12
из AnsiString в Char[] juden Общие вопросы C/C++ 6 20.05.2008 22:49
Есть таблица - В ней три поля int, char, char нужно чтобы данные заносились в таблицу Mysql Muahahaha PHP 8 27.03.2008 11:17