Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.80
123Unknown
1 / 1 / 0
Регистрация: 26.11.2012
Сообщений: 31
#1

Метод find класса string - C++

29.11.2012, 21:52. Просмотров 3639. Ответов 1
Метки нет (Все метки)

У меня задание: нужно написать программу, которая находит текст, в файле, показывает номер строки и саму строку, в которой текст находится.
Вот функция поиска:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "Head.h"
void search(string key)
{
    ifstream file("Data.txt");
    bool f=0;
    int count=0;
    string temp;
    while(file)
    {
        getline(file, temp);
        count++;
        if (temp.find(key)<-1)
        {
            cout<<temp.find(key)<<" - value\n";
            f=1;
            cout<<"The fragment was found in the "<<count<<"th string"<<"\n";
            cout<<"Content of the string: "<<temp<<"\n\n";
        }
    }
    if (f==0)
        cout<<"The fragment was not found\n";
    file.close();
}
Так вот, как я понял метод find возвращает позицию первого символа строки a в строке b, если строки a нету в строке b, то find возвращает -1.По идее, в 12 строке должно стоять условие if (temp.find(key)>=0), но функция почему-то корректно работает только при том условии, которое сейчас записано у меня в функции выше+программа выдаёт странные значения temp.find(key), например 435435435345.В чём может быть проблема ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2012, 21:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод find класса string (C++):

Visual studio не видит метод класса String - C++
Для программы понадобился метод Contanins класса string, когда пишу его в студии, она выдаёт, что такого метода в string нету(has not...

Реализовать метод append для класса String - C++
Для работы со строками можно придумать множество полезных методов (подумайте, какие методы пригодились бы вам и чего вам не хватает для их...

Сравнение двух строк (экземпляры класса string ) задействуя метод compare - C++
Здравствуйте, мне необходимо сравнить два экземпляра класса string, один из экземпляров вводится с клавиатуры, второй экземпляр берется из...

Как передать в метод класса Menu указатель на метод дочернего класса? - C++
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: setCallback(*********); //...

find() from string! - C++
Ищу в строке вхождения подстроки, запоминаю номер. Если нашел, то удаляю подстроку и вставляю соответствующий ей ключ с той же позиции. ...

Find из string.h - C++
Расскажите про функцию find из библиотеки строк. Не получается использовать, и какое значение она выдает, если в строке подстроки не...

1
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
29.11.2012, 22:49 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "Head.h"
void search(const std::string& key)
{
    using namespace std;
 
    ifstream file("Data.txt");
    bool f=0;
    int count=0;
    string temp;
 
    while(getline(file, temp))
    {        
        count++;
        string::size_type pos = temp.find(key);
 
        if (pos != string::npos)
        {
            cout << pos << " - value\n";
            f=1;
            cout<<"The fragment was found in the "<<count<<"th string"<<"\n";
            cout<<"Content of the string: "<<temp<<"\n\n";
        }
    }
 
    if (f==0)
        cout<<"The fragment was not found\n";
    file.close();
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 22:49
Привет! Вот еще темы с ответами:

std::string::find и кириллица - C++
есть простенький код #include &lt;iostream&gt; // std::cout #include &lt;string&gt; // std::string int main () { ...

String::find работает некорректно - C++
У меня есть такая подзадача: есть строка тегов(латинские буквы в треугольных строках, если тег начинается с /, то это закрывающий), нужно...

Как использовать функции string::find или функция strstr(str1 ,str2) - C++
как использовать функции string::find или функция strstr(str1 ,str2) Добавлено через 3 минуты вернее какой у них синтаксис привдети...

Как описать метод класса? Как двумя способами описать инлайнируемый метод класса? Что такое this? - C++
Раздел 1. Строки: нужен фрагмент кода. Обязательно используйте функции для работы со строками. Как найти адрес последнего символа строки?...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.