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

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

Восстановить пароль Регистрация
 
Verzhina
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 90
24.05.2012, 03:15     Сравнить переменную типа string с содержимым файла #1
а как можно сравнить переменную типа string с содержимым файла?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 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
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.05.2012, 13:30     Сравнить переменную типа string с содержимым файла #4
-=ЮрА=-, 1) Для ошибок есть поток cerr.
2) А смысл читать из txt файла через read посимвольно?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 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
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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
Нужно сравнить две переменные типа string C++
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 с содержимым файла
Ответ Создать тему
Опции темы

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