Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка в коде, связанная с AnsiString, E2316 'find' is not a member of 'AnsiStr 
:(
    Опции темы
PELIKANN
Дата 9.4.2010, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Еще один вопрос сегодня

вот в этом коде
Код

void __fastcall TForm1::Button3Click(TObject *Sender)
{
String str;
int count=0;
int i=0;

while (i!=string::npos)
{
     i=str.find("Н");
                count++;
}
StaticText2->Caption=count;
}


вылезает ошибка [C++ Error] Unit1.cpp(47): E2316 'find' is not a member of 'AnsiString'
библиотеки вроде все нужные подключил

#include <string>
#include <iostream>
using namespace std;
PM MAIL   Вверх
ИванМ
Дата 9.4.2010, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Ты определись с каким классом работаешь: String (AnsiString) или string. Это два разных класса. Поскольку в Билдере работаешь и тем более с VCL, то string тебе не нужен. Используй AnsiString. А у него метода find нет. 

Это сообщение отредактировал(а) ИванМ - 9.4.2010, 18:22
PM MAIL   Вверх
PELIKANN
Дата 9.4.2010, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



так объявлять тогда надо AnsiString str?
PM MAIL   Вверх
ИванМ
Дата 9.4.2010, 18:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



PELIKANN, можно и String str, как у вас. Только вызывать надо не метод find а Pos / AnsiPos. И соответственно никакого string::npos не будет.
И алгоритм у вас в любом случае не правильный.

Это сообщение отредактировал(а) ИванМ - 9.4.2010, 18:32
PM MAIL   Вверх
PELIKANN
Дата 9.4.2010, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



а как тогда оформить процедуру поиска подстроки в строке?
ведь к типу стринг нельзя обратиться как к обычной Си строке...
PM MAIL   Вверх
ИванМ
Дата 9.4.2010, 18:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(PELIKANN @  9.4.2010,  18:31 Найти цитируемый пост)
а как тогда оформить процедуру поиска подстроки в строке

Код

str.Pos("H")


Добавлено через 35 секунд
Цитата(PELIKANN @  9.4.2010,  18:31 Найти цитируемый пост)
ведь к типу стринг нельзя обратиться как к обычной Си строке... 

можно
Код

str.c_str()

PM MAIL   Вверх
PELIKANN
Дата 9.4.2010, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо...

и еще один вопрос
как заменить string::npos(цикл то надо чем то закончить)?


просто задача - найти сколько раз подстрока находится в строке

Это сообщение отредактировал(а) PELIKANN - 9.4.2010, 18:41
PM MAIL   Вверх
ИванМ
Дата 9.4.2010, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

    String str="abHasHasH";
    String search="H";
    int count=0;
    for(int i=1;i<=str.Length();i++)
    {
        if(str.SubString(i, search.Length())==search)
            count++;
    }

PM MAIL   Вверх
PELIKANN
Дата 9.4.2010, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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

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

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


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

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


 




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


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

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