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

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

Войти
Регистрация
Восстановить пароль
 
Verzhina
1 / 1 / 0
Регистрация: 09.04.2012
Сообщений: 90
#1

Сравнить переменную типа string с содержимым файла - C++

24.05.2012, 03:15. Просмотров 864. Ответов 7
Метки нет (Все метки)

а как можно сравнить переменную типа string с содержимым файла?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2012, 03:15     Сравнить переменную типа string с содержимым файла
Посмотрите здесь:
C++ Чтение из файла в переменную типа string
Не получается сравнить переменную типа стринг C++
C++ Как сравнить переменную типа char
C++ Как сравнить элемент вектора и переменную типа wchar_t?
C++ Как сравнить две строки типа string?
Нужно сравнить две переменные типа string C++
C++ Как сравнить два элемента массива типа string?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2012, 06:09     Сравнить переменную типа string с содержимым файла #2
Простой вариант - посимвольно.
Сложный вариант - по размеру и контрольной сумме.
-=ЮрА=-
Заблокирован
Автор FAQ
24.05.2012, 13:21     Сравнить переменную типа string с содержимым файла #3
Цитата Сообщение от Verzhina Посмотреть сообщение
а как можно сравнить переменную типа string с содержимым файла?
Ну вот хотя бы и так
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
 
string getFileText(ifstream &ifs);//ÔóГ*êöèÿ ñ÷èòûâГ*ГҐГІ ГІГҐГЄГ±ГІ ГЁГ§ ïîòîêГ* ifs
 
int main()
{
    string s = "text for compare";
    string text;
    cout<<"String for comparision\n"<<s<<endl;
    ifstream ifs("data.txt");
    if(!ifs.is_open())
        cout<<"Error open data.txt\n";
    else
    {
        text = getFileText(ifs);
        ifs.close();
        cout<<"Text in file : "<<text<<endl;
        if(text.find(s,0) != string::npos)
            cout<<"File contain string\n";
        else
            cout<<"File not contain string\n";
    }
    system("pause");
    return 0;
}
 
string getFileText(ifstream &ifs)
{
    string text;
    char chr = '\0';
    //ÏîñèìâîëüГ*îå Г·ГІГҐГ*ГЁГҐ ГґГ*éëГ*
    while(!ifs.eof())
    {
        ifs.read((char *)&chr,1);
        if(!ifs.eof())
            text += chr;
    }
    return text;
}
data.txt
dkgdf
fhdhj 1h
g2j1fh
m jn,.k
text for compare
hgf
tjkkk
Миниатюры
Сравнить переменную типа string с содержимым файла  
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
24.05.2012, 13:30     Сравнить переменную типа string с содержимым файла #4
-=ЮрА=-, 1) Для ошибок есть поток cerr.
2) А смысл читать из txt файла через read посимвольно?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2012, 13:44     Сравнить переменную типа string с содержимым файла #5
А ещё лучше сделать отображение файла в память и использовать strcmp.
-=ЮрА=-
Заблокирован
Автор FAQ
24.05.2012, 14:39     Сравнить переменную типа string с содержимым файла #6

Не по теме:

скучно как-то
Давайте поругамся что ли



Добавлено через 8 минут
ForEveR, твой спецзаказ
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
 
string getFileText(ifstream &ifs);//ÔóГ*êöèÿ ñ÷èòûâГ*ГҐГІ ГІГҐГЄГ±ГІ ГЁГ§ ïîòîêГ* ifs
 
int main()
{
    string s = "text for compare";
    string text;
    cout<<"String for comparision\n"<<s<<endl;
    ifstream ifs("data.txt");
    if(!ifs.is_open())
        cerr<<"Error open data.txt\n";
    else
    {
        text = getFileText(ifs);
        ifs.close();
        cout<<"Text in file : "<<text<<endl;
        if(text.find(s,0) != string::npos)
            cout<<"File contain string\n";
        else
            cout<<"File not contain string\n";
    }
    system("pause");
    return 0;
}
 
string getFileText(ifstream &ifs)
{
    string text;
    string line;
    //ÏîñèìâîëüГ*îå Г·ГІГҐГ*ГЁГҐ ГґГ*éëГ*
    while(!ifs.eof())
    {
        getline(ifs,line);
        text += line;
        if(!ifs.eof())
            text += "\n";
    }
    return text;
}
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
24.05.2012, 14:52     Сравнить переменную типа string с содержимым файла #7
-=ЮрА=-, пасиба. Но как-то слишком уж многословно.

Кстати про посимвольно.

C++
1
std::string s((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2012, 15:18     Сравнить переменную типа string с содержимым файла
Еще ссылки по теме:
C++ Переменную типа string вывести в printf?
C++ Вставить один символ в переменную типа string
Как разбить переменную типа String на 2 части? C++
C++ Как использовать переменную типа string в заголовочном файле?
C++ Как записать шестнадцатеричное число в переменную типа string?

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
24.05.2012, 15:18     Сравнить переменную типа string с содержимым файла #8
Цитата Сообщение от ForEveR Посмотреть сообщение
-=ЮрА=-, пасиба.
- не стесняйся обращайся если что

Цитата Сообщение от ForEveR Посмотреть сообщение
std::string s((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
- чесн слово вот не использую таких колбас
Yandex
Объявления
24.05.2012, 15:18     Сравнить переменную типа string с содержимым файла
Ответ Создать тему
Опции темы

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