Форум программистов, компьютерный форум CyberForum.ru

Функция поиска символа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.79
янгл
 Аватар для янгл
6 / 6 / 0
Регистрация: 23.07.2009
Сообщений: 237
05.10.2010, 17:40     Функция поиска символа #1
Всем привет. Есть ли в Си функция поиска символа, слова в строке? В паскале для этого есть pos();
Как определять строковый тип? String x;?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
obuhanoe
23 / 21 / 2
Регистрация: 25.08.2010
Сообщений: 93
05.10.2010, 17:44     Функция поиска символа #2
strstr

const char * strstr ( const char * str1, const char * str2 );
char * strstr ( char * str1, const char * str2 );
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
05.10.2010, 17:44     Функция поиска символа #3
http://www.cplusplus.com/reference/string/string/find/
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.10.2010, 17:45     Функция поиска символа #4
Цитата Сообщение от янгл Посмотреть сообщение
Как определять строковый тип?
в С - char
в С++ - string
янгл
 Аватар для янгл
6 / 6 / 0
Регистрация: 23.07.2009
Сообщений: 237
05.10.2010, 17:59  [ТС]     Функция поиска символа #5
Так Char это ведь символьный тип, один байт. Или можно объявить переменную как char и впихать в неё строку? У меня борланд С++ и он ругается на string. Мне нужно запихать текстовый файл в строку.

strstr - это что? Строковый тип?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
05.10.2010, 18:01     Функция поиска символа #6
Можно обявить массив символов char, ето и будет тебе строка!!!!
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
05.10.2010, 18:04     Функция поиска символа #7
Цитата Сообщение от PointsEqual Посмотреть сообщение
в С - char
в С++ - string
Немного неточно. char - это символьный тип, char* - это "строковый тип"
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
05.10.2010, 18:05     Функция поиска символа #8
Цитата Сообщение от янгл Посмотреть сообщение
Так Char это ведь символьный тип, один байт. Или можно объявить переменную как char и впихать в неё строку? У меня борланд С++ и он ругается на string. Мне нужно запихать текстовый файл в строку.

strstr - это что? Строковый тип?
Код
char *a = "Hello World";

#include <string>
....
std::string = "Hello World";
янгл
 Аватар для янгл
6 / 6 / 0
Регистрация: 23.07.2009
Сообщений: 237
05.10.2010, 18:06  [ТС]     Функция поиска символа #9
MILAN, я так и делаю. Но существует проблема. Как определить размер массива. Я написал функцию производящую этот поиск, вот тут нужно определить размер массива.
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
05.10.2010, 18:09     Функция поиска символа #10
Цитата Сообщение от янгл Посмотреть сообщение
strstr - это что? Строковый тип?
читай вниметельней. Это функция поиска в строке
янгл
 Аватар для янгл
6 / 6 / 0
Регистрация: 23.07.2009
Сообщений: 237
05.10.2010, 18:13  [ТС]     Функция поиска символа #11
То есть если написать так:
C
1
strstr(s,x);
то результатом выполнения функции будет номер позиции первого символа строки x в строке s, а если не найдено, то 0?
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
05.10.2010, 18:16     Функция поиска символа #12
янгл, strstr возвращает указатель на позицию в строке или NULL, если подстрока в строке не найдена. Подробнее здесь
янгл
 Аватар для янгл
6 / 6 / 0
Регистрация: 23.07.2009
Сообщений: 237
05.10.2010, 18:20  [ТС]     Функция поиска символа #13
Я не совсем понимаю, что такое указатель. Это сам символ или номер символа?
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
05.10.2010, 18:32     Функция поиска символа #14
янгл, это такая переменная, которая хранит адрес символа (здесь говорится про указатель на символ).
К примеру:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char s = 'a'; // Символ
char *ps = &a; // Указатель на символ
// В С массивы реализованы через указатель. Строка - это массив символов
// признак конца строки - специальный символ '\0', он же нуль-терминатор (null-terminator).
// строки С также называются null-terminated string (т.е. строки, которые заканчиваются на нуль-терминатор)
// если инициализировать строки так, как показано ниже, то нуль-терминатор неявно вставляется в строку
// таким образом, на самом деле строка string имеет не 6 элементов ("abcdef"), а 7 ("abcdef\0"):
char *string = "abcdef"; // Строка С, она же указатель.
// Доступ к элементу, на который указывает указатель, осуществляется с помощью
// оператора разыменования "*":
 
// string указывает на первый элемент строки, т.е. на символ 'a'
// изменим его:
*string = 'z'; // Изменился и первый символ, и сама строка (теперь "zbcdef")
char *ps = string + 1; // Это указатель на второй символ ("b") и одновременно строка ("bcdef")
Это самые основы работы с указателями (и строками C). Я бы посоветовал обратиться к учебной литературе, чтобы прояснить этот вопрос, т.к. без понимания указателей не будет и понимания языка C.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2010, 06:07     Функция поиска символа
Еще ссылки по теме:

C++ Функция вставки символа в начало строки
Функция проверки введенного символа C++
Функция / метод поиска C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
06.10.2010, 06:07     Функция поиска символа #15
C++
1
2
3
4
5
6
7
char *string = "abcdef"; // Строка С, она же указатель.
// Доступ к элементу, на который указывает указатель, осуществляется с помощью
// оператора разыменования "*":
 
// string указывает на первый элемент строки, т.е. на символ 'a'
// изменим его:
*string = 'z'; // Изменился и первый символ, и сама строка (теперь "zbcdef")
как это изменим его ?

C
1
char *string = "abcdef";
"abcdef" - строковой литерал, строковая константа, а константу нельзя менять
и у Шилдта в справочнике есть пример вроде такого, где функция strtok, меняющая подаваемый массив, вызывается со строковым литералом
Yandex
Объявления
06.10.2010, 06:07     Функция поиска символа
Ответ Создать тему
Опции темы

Текущее время: 20:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru