Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа со строками 
:(
    Опции темы
BLACK_KOT
Дата 21.5.2009, 18:08 (ссылка)   | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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




Код

char s[255];
strcpy(s,"12345");
Caption=s;


так работает.

Код

strcpy(Caption,"12345"); //поправте код пожалуйсто


а так говорит - немогу конвертировать ansistring to char. 

а как мне вставить текст в заголовок, чтоб из "Form1" получилось "Fo12345rm1"?

а удалять символы из строки как?


пожалуйста, приведите пример, ссылок на теорию не надо.



--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
andrew_121
Дата 21.5.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



BLACK_KOT, Сделай так: Caption="blablabla";


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
BeKToP
Дата 21.5.2009, 19:06 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

        AnsiString s;
        char *s2=s.c_str();


переводит AnsiString в char*
PM MAIL WWW ICQ   Вверх
BLACK_KOT
Дата 21.5.2009, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



наверно я плохо сформулировал вопрос.
в delphi есть элементарные функции для работы со строками: copy, insert, delete.

мне нужны их аналоги в С++ !
в теории читал, что тип string поставляется с С++ и есть удобные функции для работы с ним.
но объявить переменную типа string у меня не получилось. приведите пример работы со строками : как их объявить, как скопировать часть строки , как вставить строку в другую строку, как удалить часть строки.



--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
azesmcar
Дата 21.5.2009, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(BLACK_KOT @  21.5.2009,  19:16 Найти цитируемый пост)
в delphi есть элементарные функции для работы со строками: copy, insert, delete.

да, но не надо забывать что
char * это не string - это указатель на символьный тип.

Цитата(BLACK_KOT @  21.5.2009,  19:16 Найти цитируемый пост)
в теории читал, что тип string поставляется с С++ и есть удобные функции для работы с ним.

не поверишь..на практике он тоже существует smile

Код

#include <string>

int main()
{
    std::string temp = "hello world";
    //copy
    std::cout << temp.substr(0, 5) << std::endl;
    //delete
    temp.erase(temp.begin(), temp.begin() + 6);
    std::cout << temp << std::endl;
    //insert
    temp.insert(0, "bye ");
    std::cout << temp << std::endl;
}

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


Шустрый
*


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

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



Насколько я понял, компилятор есть CodeGear (Borland?) C++ Builder.
В нём нет надобности использовать std::string из STL'а.

Используй AnsiString/WideString (или просто String - компилятор сам подменит)

А функции там такие:
Код

String str = "blablabla", a;
a = str.SubString(2, 3); // a ="abl"
a = str.Insert("123", 2); // a = "bl123ablabla"
a = str.Delete(2, 2); // a = "bblabla"
int x = str.Pos("lab"); // x = 1


p.s.
Цитата
char * это не string - это указатель на символьный тип.

char* тоже смысла использовать не имеет (кроме запросов к WinAPI). String гораздо удобнее (в отличии от char*) и используется во всех объектах VCL (в отличии от string).

PM MAIL ICQ Skype   Вверх
BLACK_KOT
Дата 22.5.2009, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



yeputons ТО, ЧТО НАДО!

но как быть, если я пишу на winapi? ругается на string..

p.s. вот ведь Сишный геморой - ведь точно так же объявлял строковую переменную, но string с маленькой буквы написал - и еррор.. в делфи в этом плане проще - регистр роли не играет.


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
586
Дата 22.5.2009, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(BLACK_KOT @  22.5.2009,  01:08 Найти цитируемый пост)
но как быть, если я пишу на winapi? ругается на string..

Можно написать так:
Код
std::string a = "asdf";
MessageBox(0, a.c_str(), 0, 0);

Цитата(BLACK_KOT @  22.5.2009,  01:08 Найти цитируемый пост)
p.s. вот ведь Сишный геморой - ведь точно так же объявлял строковую переменную, но string с маленькой буквы написал - и еррор.. в делфи в этом плане проще - регистр роли не играет. 

привыкнешь.
PM   Вверх
andrew_121
Дата 22.5.2009, 00:55 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



Цитата(yeputons @  21.5.2009,  20:28 Найти цитируемый пост)
CodeGear (Borland?) C++ Builder

Ну...уважаемые. Этот продукт и компилятором назвать сложно smile  Скорее -  smile  smile 
Самый, не поддерживающий стандарт компилер! smile 
Цитата(yeputons @  21.5.2009,  20:28 Найти цитируемый пост)
Используй AnsiString

Странно, почему ansi, в стандарте нет такого!
Цитата(yeputons @  21.5.2009,  20:28 Найти цитируемый пост)
или просто String - компилятор сам подменит

Опачки... Это как?!!!! smile  Сам??? А что он еще САМ подменяет? smile 
Цитата(yeputons @  21.5.2009,  20:28 Найти цитируемый пост)
используется во всех объектах VCL

Вот это аргумент smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  ###... Переместить вас обоих в раздел билдеровцев smile

Добавлено @ 01:00
Цитата(586 @  22.5.2009,  00:47 Найти цитируемый пост)
Можно написать так:
std::string a = "asdf";
MessageBox(0, a.c_str(), 0, 0);

А лучше так:
Код

class String:public std::string {
public:
   operator char*() {return (char*)c_str();}
   operator const char*() const {return c_str();}
};


Добавлено @ 01:03
Цитата(BLACK_KOT @  22.5.2009,  00:08 Найти цитируемый пост)
в делфи в этом плане проще - регистр роли не играет

 smile ###!!!!!!! Ты так говоришь, как будто это плюс. Это куча минусов!!!

Это сообщение отредактировал(а) andrew_121 - 22.5.2009, 01:04


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
mes
Дата 22.5.2009, 02:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(andrew_121 @  21.5.2009,  23:55 Найти цитируемый пост)
А лучше так:
   operator char*() {return (char*)c_str();}

smile



--------------------
PM MAIL WWW   Вверх
andrew_121
Дата 22.5.2009, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



mes, Почему?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
azesmcar
Дата 22.5.2009, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



дубликат пошел

Это сообщение отредактировал(а) azesmcar - 22.5.2009, 08:38
PM   Вверх
azesmcar
Дата 22.5.2009, 07:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(andrew_121 @  22.5.2009,  00:55 Найти цитируемый пост)
class String:public std::string {

Открытое наследование от контейнера STL? smile 

Цитата(andrew_121 @  22.5.2009,  00:55 Найти цитируемый пост)
Странно, почему ansi, в стандарте нет такого!

API функций тоже нет в стандарте, их тоже нельзя использовать?

Цитата(andrew_121 @  22.5.2009,  00:55 Найти цитируемый пост)
Опачки... Это как?!!!! smile  Сам??? 

не совсем сам, с помощью препроцессора.

Цитата(andrew_121 @  22.5.2009,  00:55 Найти цитируемый пост)
А что он еще САМ подменяет? smile  

предполагаю что и все остальные препроцессорные директивы он заменяет с помощью препроцессора. Как и MessageBox заменяется на MessageBoxW.

Цитата(andrew_121 @  22.5.2009,  02:22 Найти цитируемый пост)
mes, Почему? 

зачем пользователю неконстантный указатель на эту область памяти?

Это сообщение отредактировал(а) azesmcar - 22.5.2009, 07:22
PM   Вверх
mrbrooks
Дата 22.5.2009, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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




Цитата(yeputons @  21.5.2009,  20:28 Найти цитируемый пост)
Насколько я понял, компилятор есть CodeGear (Borland?) C++ Builder.
В нём нет надобности использовать std::string из STL'а.

очень и очень спорное заявление.

Цитата(andrew_121 @  22.5.2009,  00:55 Найти цитируемый пост)
Опачки... Это как?!!!! smile  Сам??? А что он еще САМ подменяет? smile 

а что здесь удивительного камрад. ит из препроцессор. либо анси, либо юникод. выставляется в свойствах проекта. в студии аналогичная ситуация. 

Цитата(andrew_121 @  22.5.2009,  00:55 Найти цитируемый пост)
Ты так говоришь, как будто это плюс. Это куча минусов!!!

хы. кому как. по мне - это не удобно. Переменная объявлена как FF, потом как fF, а затем как Ff и в довесок ff. Видел я такой подход  smile 


PM MAIL   Вверх
azesmcar
Дата 22.5.2009, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



хехе, отвлекли меня...продолжим smile

Цитата(mrbrooks @  22.5.2009,  07:53 Найти цитируемый пост)
В нём нет надобности использовать std::string из STL'а.

AnsiString WideString не совместимы с STL. К ним нельзя применить алгоритмы STL - которые кстати дают довольно нехилые возможности.

Цитата(andrew_121 @  22.5.2009,  00:55 Найти цитируемый пост)
Вот это аргумент 

кстати да...это аргумент.
если используешь VCL то свои строки лучше хранить в VCL-овском String -e, так удобнее. Но тогда отказываемся от algorithms применимым к типу string. К выбору надо подходить исходя из задачи.

Это сообщение отредактировал(а) azesmcar - 22.5.2009, 08:45
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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