Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2009, 17:36   #1
getUp
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 24
По умолчанию поиск строки в файле

подскажите почему не получается найти строку words = word1 + ' ' + word2
Код:
#include "stdafx.h"
#include "fstream"
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string>

using namespace std; 

void main()
{
	setlocale(LC_ALL,"russian");
	string word1;
	string word2;
	string words;
	string current_str;
	cin >> word1;
	cin >> word2;
	
             words=word1+' '+word2;
	
	ifstream file("D:\\F.txt");

	while(!(file.eof()))
	{ 
		getline(file, current_str, ' ');
		
		if (word1.compare(current_str)==NULL)
			cout<<"нашлось 1е слово ";
		
		if (word2.compare(current_str)==NULL)
			cout<<"нашлось 2е слово";
	}

	while(!(file.eof()))
	{ 
		getline(file, current_str);
		if (words.compare(current_str)==NULL)
		             cout<<"слова рядом через пробел";
	}

	getch();
}
getUp вне форума Ответить с цитированием
Старый 23.10.2009, 23:38   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Добавьте перед вторым циклом:
Код:
file.clear();
file.seekg(0,ios::beg);
и в конце принято файл все-таки закрывать:
Код:
file.close();
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.10.2009, 14:02   #3
getUp
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 24
По умолчанию

да все равно не получается: слова, записанные через пробел, не находит.
getUp вне форума Ответить с цитированием
Старый 24.10.2009, 21:10   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А у меня находит.
Содержимое файла:
Код:
123 456
123 789
sgfs dfgs
Ввожу:
123
789
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.10.2009, 21:19   #5
getUp
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 24
По умолчанию

а попробуйте в первую строку добавьте через пробел третье число
и введите 123 и 456

не работает
getUp вне форума Ответить с цитированием
Старый 24.10.2009, 21:27   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Естественно не работает! Ведь вы читаете из файла всю строку. И всю же ее и используете при сравнении. Вместо compare используйте find.
Код:
while(!(file.eof()))
	{ 
		getline(file, current_str);
		if (current_str.find(words)!=string::npos)
		             cout<<"\nslova ryadom";
	}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.10.2009, 21:51   #7
getUp
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 24
По умолчанию

о, спасибо большое!

а как бы еще сделать чтобы и русские слова искала?
getUp вне форума Ответить с цитированием
Старый 24.10.2009, 23:19   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Могу предложить такой вариант:
Код:
#include <fstream>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string>
#include <windows.h>

using namespace std; 

int main()
{
	setlocale(LC_ALL,"russian");
	string word1;
	string word2;
	string words;
	string current_str;
	cin >> word1;
	cin >> word2;
	char buf[100];
	
	size_t p;
	string temp;
	
           words=word1+' '+word2;
	
	ifstream file("test.txt");

	while(!(file.eof()))
	{ 
		getline(file, current_str,'\n');
		p = 0;
		CharToOem(current_str.c_str(),buf);
		 strcat(buf,"\0");
		 current_str = buf;
		 
		while(p<=current_str.length())
		{
                        temp = current_str.substr((!p)?p:(p+1),current_str.find_first_of(" \n",p+1)-p);
                        p = current_str.find_first_of(" \n",p+1);

	 	  if (word1.compare(temp)==NULL)
	 		cout<<"first word found\n";
	 	
	 	  if (word2.compare(temp)==NULL)
	 		cout<<"second word found\n";
                        }
	}

file.clear();
file.seekg(0,ios::beg);

	while(!(file.eof()))
	{ 
		getline(file, current_str);
		CharToOem(current_str.c_str(),buf);
		strcat(buf,"\0");
		current_str = buf;
		if (current_str.find(words)!=string::npos)
		             cout<<"\nboth words found";
	}

 file.close();
 getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 24.10.2009 в 23:22.
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск строки в файле по шаблону andru15 Общие вопросы C/C++ 1 16.02.2009 18:44
Поиск строки в текстовом файле Black_Ak24 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 24.01.2009 20:30
Поиск строки в файле Gwynbleidd Общие вопросы C/C++ 1 08.10.2008 01:45
Поиск в файле asale Microsoft Office Excel 1 15.05.2007 23:33