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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.80
123Unknown
1 / 1 / 0
Регистрация: 26.11.2012
Сообщений: 31
29.11.2012, 21:52     Метод find класса string #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.В чём может быть проблема ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2012, 21:52     Метод find класса string
Посмотрите здесь:

C++ Как описать метод класса? Как двумя способами описать инлайнируемый метод класса? Что такое this?
C++ Find из string.h
C++ как использовать функции string::find или функция strstr(str1 ,str2)
C++ find() from string!
C++ Visual studio не видит метод класса String
std::string::find и кириллица C++
C++ Find() для поиска элемента в поле класса / STL
C++ Как передать в метод класса Menu указатель на метод дочернего класса?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
29.11.2012, 22:49     Метод find класса string #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();
}
Yandex
Объявления
29.11.2012, 22:49     Метод find класса string
Ответ Создать тему
Опции темы

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