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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2011, 10:35   #11
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Если поясните чем vector< char > может быть лучше string - то я буду рад.
Это семантически другой объект. Он и не лучше, и не хуже, использование зависит от контекста.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 20.07.2011, 10:42   #12
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
использование зависит от контекста.
я об этом же.
rrrFer вне форума Ответить с цитированием
Старый 20.07.2011, 11:35   #13
Ru_DoLF
Ubuntu 10.04
Пользователь
 
Аватар для Ru_DoLF
 
Регистрация: 15.07.2010
Сообщений: 51
По умолчанию

Есть функция, которая возвращает указатель на нужный вам символ. Зная указатель на начало строки и указатель на нужный символ не трудно найти индекс символа в строке.

Код:
#include <cstring>
#include <cstdio>

using namespace std;

int main()
{
	char str[] = "Hello World";
	char *c = new char;

	//Индекс первого слева 'l'	
	c = strchr((char *)str, (int)'l');
	printf("%d\n", (int)c - (int)str);

	//Индекс первого справа 'l'
	c = strrchr(c, (int)'l');
	printf("%d\n", (int)c - (int)str);

	return 0;
}
Язык образует среду мышления и формирует представление о том, о чем мы думаем (Б. Л. Уорф)
Ru_DoLF вне форума Ответить с цитированием
Старый 20.07.2011, 20:49   #14
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от firephenix Посмотреть сообщение
Например: есть массив символов chr S[12]="01234657896" и мне нужно найти под каким номером в этой строке находится первый встретившийся символ '6', функция как раз должна мне выдать этот номер, т.е. 5 (или хотя бы индекс 4).

Для этих целей в С++ существует библиотека стандартных алгоритмов. Вашу задачу решает стандартный алгоритм std::find. Если вам нужно найти элемент массива по какому-нибудь условию, то можно использовать стандартный алгоритм std::find_if

Вот пример прототипа алгоритма std::find

Код:
template <typename InputIterator, typename T>

InputIterator find( InputIterator first, InputIterator last, const T &value );
Например, решение поставленной задачи в вашем случае

Код:
#include  <algorithm>
#include  <cstring>
#include  <iostream>
....

S[12]="01234657896"
char *p = std::find( S, S + std::strlen( S ), '5' );

if ( p != S + std::strlen( S ) ) std::cout << "Found\n";

Преимущество стандартного алгоритма состоит в том, что его можно использовать с массивами любого типа. Ежели вас интересует вопрос только в отношении символьных массивов, то лучшен использовать стандартные строковые функции. Например, в вашем случае задача выполняется с помощью строковой функции std::strchr.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно отобразить количество символов до определённого символа Dimidrolus Помощь студентам 17 26.06.2011 21:20
Подсчёт количества символов в массиве .antony. Помощь студентам 0 09.06.2011 20:43
Подсчёт символов в массиве Pecho Помощь студентам 12 25.11.2010 15:39
TStringList Замена символа на ряд символов. Alex Cones Общие вопросы Delphi 17 23.03.2010 20:00
Побитовое чтение символа из таблицы символов в BIOSe Viriat Общие вопросы C/C++ 0 10.01.2010 17:26