Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена символа в переменной 
:(
    Опции темы
vino
Дата 15.5.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Подскажите,как мне заменить в переменной символ КАВЫЧКИ на пробел или просто убрать символ КАВЫЧКИ.Спасибо.
PM MAIL   Вверх
LastAngel
Дата 15.5.2008, 13:49 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.4.2008

Репутация: нет
Всего: нет



Код

  AnsiString str = "sg\"df\"dsg";
  char* pcBuf = str.c_str();
  for(int i = 0; i < str.Length(); i++)
  {
    if(pcBuf[i] == '\"')
    {
      pcBuf[i] = ' ';
    }
  }
 // str = pcBuf;
 // memo->Lines->Add(str);


ну или стандартной функцией StringReplace  smile 

Это сообщение отредактировал(а) LastAngel - 15.5.2008, 13:56
PM MAIL   Вверх
586
Дата 15.5.2008, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



LastAngel, AnsiString с единицы нумеруется, а не с нуля.
PM   Вверх
dumb
Дата 15.5.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Цитата(LastAngel @  15.5.2008,  14:49 Найти цитируемый пост)
char* pcBuf = str.c_str();
так нельзя. да и зачем вообще?

Код

  AnsiString str = "sg\"df\"dsg";
//1 вариант - более понятный новичку, да и быстрее он
  for(int i = 1; i <= str.Length(); i++)
    if(str[i] == '\"')
      str[i] = ' ';
//2 вариант - более универсальный(позволяет заменять подстроки, а не только символы), но и более медленный
  str = StringReplace(str, "\"", " ", TReplaceFlags() << rfReplaceAll);

PM MAIL   Вверх
mrbrooks
Дата 15.5.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Если это не критично для vino то можно использовать стандартную функцию Бормана StringReplace

Код

String str = "Hello:fucking:world:", str1;
str1 = StringReplace(str,':',"",TReplaceFlags()<<rfReplaceAll);
ShowMessage(str1);


Ответ - Hellofuckingworld
PM MAIL   Вверх
LastAngel
Дата 15.5.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.4.2008

Репутация: нет
Всего: нет



Цитата(dumb @ 15.5.2008,  14:12)
так нельзя. да и зачем вообще?


кто сказал что так нельзя ?? объясните-ка )) очень интересно

Добавлено через 2 минуты и 52 секунды
Цитата(586 @ 15.5.2008,  14:11)
LastAngel, AnsiString с единицы нумеруется, а не с нуля.

работа идёт с чаром,а не с анси ... смотри внимательнее 

PM MAIL   Вверх
Rififi
Дата 15.5.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 1
Всего: 36



Цитата(LastAngel @  15.5.2008,  15:10 Найти цитируемый пост)
кто сказал что так нельзя ??

Стандарт, естессно, кто же ещё?
читаем 21.3.6

Это сообщение отредактировал(а) Rififi - 15.5.2008, 15:21
PM MAIL   Вверх
LastAngel
Дата 15.5.2008, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.4.2008

Репутация: нет
Всего: нет



Цитата(Rififi @ 15.5.2008,  15:20)
Стандарт, естессно, кто же ещё?

т.е. хочешь сказать это не будет работать?
PM MAIL   Вверх
Rififi
Дата 15.5.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 1
Всего: 36



*That*, Detective, is the right question. © I, Robot.
PM MAIL   Вверх
LastAngel
Дата 15.5.2008, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.4.2008

Репутация: нет
Всего: нет



Цитата(Rififi @ 15.5.2008,  15:26)
*That*, Detective, is the right question. © I, Robot.

хочу огорчить, это полностью рабочий вариант ...
PM MAIL   Вверх
dumb
Дата 15.5.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



хотя стандарт для AnsiString не указ, но ничто человеческое ему не чуждо. жмем F1 на c_str и читаем.

Цитата(LastAngel @  15.5.2008,  16:31 Найти цитируемый пост)
хочу огорчить, это полностью рабочий вариант...
а нам-то чего огорчаться? мы только посочувствовать пользователям твоего кода можем...
PM MAIL   Вверх
Rififi
Дата 15.5.2008, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 1
Всего: 36



Цитата(LastAngel @  15.5.2008,  15:31 Найти цитируемый пост)
хочу огорчить, это полностью рабочий вариант ... 

чужой кривой код - это не повод для огорчения, если только не мне его саппортить.
PM MAIL   Вверх
LastAngel
Дата 15.5.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.4.2008

Репутация: нет
Всего: нет



какие то глупые выводы .... что кривого в коде ... если при выделении памяти идёт инициализация объекта то выделяется столько памяти сколько надо,т.е. сколько будет проинициализирвоано ... обидно что основ языка не знают люди ...
PM MAIL   Вверх
vladimir_ad
Дата 16.5.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 7.9.2007

Репутация: нет
Всего: нет



LastAngel,  не кипятись. Удивительно что AnsiString::c_str() возвращает не const char* в отличии от реализации в stl.
Может быть потому, что AnsiString реализована на паскале.?.
В твоем примере нет изменения размера строки и ничего страшного не произойдет. Однако в других случаях может привести к ошибке
работы AnsiString или нарушению памяти.
PM MAIL   Вверх
586
Дата 16.5.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Цитата(vladimir_ad @  16.5.2008,  14:37 Найти цитируемый пост)
Удивительно что AnsiString::c_str() возвращает не const char* в отличии от реализации в stl.
Может быть потому, что AnsiString реализована на паскале.?.

Я думаю, это ошибка в заголовке. Там после этого метода идёт метод, который возвращает константный указатель.
Цитата(dstring.h @  line 160)
    // C string operator
    char* __fastcall c_str() const        { return (Data)? Data: "";}

    // Read access to raw Data ptr.  Will be NULL for an empty string.
    const void* __fastcall data() const   { return Data; }

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1049 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.