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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2009, 11:37   #1
iiunbreakableii
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 89
По умолчанию Аналоги функций

Здравствуйте, Товарисчи!
Не подскажите, если ли аналоги таких функций Delphi в С++(Visual Studio 2008), как
pos
posex
copy
delete
length
и вообще функций для работ со строками типа LPWSTR.

Спасибо!
iiunbreakableii вне форума Ответить с цитированием
Старый 15.06.2009, 11:47   #2
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

ну посмотри на std::string. там все это есть. некоторые методы правда общие (например copy, ему не важно откуда копировать, из строки либо из вектора).
vvviperrr вне форума Ответить с цитированием
Старый 15.06.2009, 11:55   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от iiunbreakableii Посмотреть сообщение
Здравствуйте, Товарисчи!
Не подскажите, если ли аналоги таких функций Delphi в С++(Visual Studio 2008)
Смотря какие строки имеете ввиду. Если сишные (char*), то:
Цитата:
Сообщение от iiunbreakableii Посмотреть сообщение
pos
функция: substr(a, b)
Назначение: поиск подстроки в строке. Позицию можно определить посредством разности указателей:
Код:
c = strstr(a, b);
int pos = c - a;
Цитата:
Сообщение от iiunbreakableii Посмотреть сообщение
posex
Собственно идея та же, что и с pos, только будет:
c = strstr(a + offset, b);
Цитата:
Сообщение от iiunbreakableii Посмотреть сообщение
copy
strcpy / strncpy
Если скопировать нужно что-то из середины, то:
Код:
strncpy(b, a + from, count);
// в b будет подстрока а с символа №from и длиной count
Цитата:
Сообщение от iiunbreakableii Посмотреть сообщение
delete
Нету такого аналога. Если нужно удалить что-то с конца строки, то просто:
a[n] = '\0';
где n - символ, начиная с которого нужно обрезать строку
Цитата:
Сообщение от iiunbreakableii Посмотреть сообщение
length
strlen

Это всё для однобайтовых строк. Для LPWSTR в принципе суть будет такая же, только функции будут:
вместо strlen - wcslen
strstr - wcsstr
и так далее

Только аккуратнее с операциями над указателями, которые я приводил в пример. В случае с многобайтовыми строками можно наступить на грабли.
Лучше какие-нибудь статейки по строковым операциям почитать или книженцию какую. Я просто с "широкими" строками не работал практически и тут не помощник
pu4koff вне форума Ответить с цитированием
Старый 16.06.2009, 08:24   #4
iiunbreakableii
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 89
По умолчанию

Большое спасибо!
iiunbreakableii вне форума Ответить с цитированием
Старый 17.06.2009, 15:28   #5
iiunbreakableii
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 89
По умолчанию

Ещё один вопросик, как скопировать подстроку, учитывая что строки типа CString и содержимое у меня юникодовское.
iiunbreakableii вне форума Ответить с цитированием
Старый 17.06.2009, 15:33   #6
Pashan
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 89
По умолчанию

Код:
CString S("12345");
CString SubS = S.Mid(2, 3);
Pashan вне форума Ответить с цитированием
Старый 26.06.2009, 09:40   #7
iiunbreakableii
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 89
По умолчанию

Надеюсь я вас не достал. Мне опять нужны разные функции к которым я привык в Delphi.
1. как объявить множество (отличается ли оно от массива в с++)?
2. проверка на наличие символа в множестве символов
Код:
// пример в delphi
a in [b1,b2,b3];
3. как обозначать символы
Код:
// пример в delphi
TabPos:=posex(#$9,str);
NewLinePos:=posex(#$A,Str);
ReturnPos:=posex(#$D,Str);
SpacePos:=posex(' ',str);
спасибо Вам за помощь!
iiunbreakableii вне форума Ответить с цитированием
Старый 26.06.2009, 10:27   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от iiunbreakableii Посмотреть сообщение
1. как объявить множество (отличается ли оно от массива в с++)?
На уровне языка, в отличии от делфей, нет поддержки множеств. В составе STL имеется класс set для этих целей.
Цитата:
Сообщение от iiunbreakableii Посмотреть сообщение
2. проверка на наличие символа в множестве символов
Код:
// пример в delphi
a in [b1,b2,b3];
Так не получится сделать, т.к. поддержки на уровне языка нет. Создавать объект класса set, заполнять его нужными элементами (b1,b2,b3) и искать в нём нужный символ a, или же как-нибудь так:
Код:
switch(a)
{
case b1:
case b2:
case b3:
  // Символ входит в "множество"
  break;
}
Но это конечно извращение получается
Цитата:
Сообщение от iiunbreakableii Посмотреть сообщение
3. как обозначать символы
Ну в Си символы задаются в одинарных кавычках, а строки - в двойных.
Код:
char c = '\0'; // Символ с кодом 0 аналог делфийского #0
c = '\n'; // перевод каретки #13
с = '\x09'; // код символа в 16-ричной системе
...
Только строковые функции принимают в основном строки в качестве аргументов.Так что, возможно, придется создавать строку из двух символов: "нужного" и нулевого, как знак конца строки.
pu4koff вне форума Ответить с цитированием
Старый 26.06.2009, 12:14   #9
iiunbreakableii
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 89
По умолчанию

Спасибо Вам, pu4koff !
Теперь буду знать.
iiunbreakableii вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение графиков функций С++ (методы аппроксимации функций) amdbodia Общие вопросы C/C++ 0 24.05.2009 15:28
использование функций в качестве параметров других функций mono Помощь студентам 0 20.04.2009 18:25
Компонент Text3D и аналоги Mixasik Компоненты Delphi 1 15.09.2008 12:15
Аналоги функций xfoxx Общие вопросы C/C++ 4 26.03.2008 00:22
Accelerator Plus и аналоги ? Virtson Софт 7 17.01.2007 07:56