Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
123Unknown
1 / 1 / 1
Регистрация: 26.11.2012
Сообщений: 31
1

Метод find класса string

29.11.2012, 21:52. Просмотров 4795. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2012, 21:52
Ответы с готовыми решениями:

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

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

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

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

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

1
rangerx
1954 / 1563 / 478
Регистрация: 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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 22:49

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

std::string::find и кириллица
есть простенький код #include &lt;iostream&gt; // std::cout #include &lt;string&gt; //...

String::find работает некорректно
У меня есть такая подзадача: есть строка тегов(латинские буквы в треугольных строках, если тег...


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

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

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