none
Поиск слова в файле. RRS feed

  • Вопрос

  • Файл состоит из слов и цифр. Я ввожу в компилятор слово для поиска. Считываю. Дальше вообще без идей. Когда программа находит введённое мною слово, сразу же после этого в файл должна производится перезапись информации которую я ввожу после нахождения слова. С++ native, .txt, Visual 2013.
    18 марта 2014 г. 13:57

Ответы

  • К сожалению, очень многим экспертам не хватает внимательности в прочтении вопроса :)

    К сути. Перезаписать часть содержимого файла невозможно. Его можно только дополнить, или сформировать заново. Идея, предложенная выше, разумна. Вы читаете все строки файла, формируете нечто вроде базы данных (в простейшем случае, массив слов), и, далее, на его основе, производите поиск и замену.

    В C++ для этих целей можно воспользоваться классами файловых потоков и контейнерами (для формирования базы).


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    19 марта 2014 г. 19:00

Все ответы

  • Покажите пример Вашего файла и искомого слова.
    19 марта 2014 г. 8:09
  • Вот я ввожу в компилятор Holly и дальше мне нужно перезаписать последующие цифры.

    Пример текста(не могу скинуть скрин, microsoft не разрешает)

    1   Buddy          4.2  289  2 5.69667
    2   Holly            3.8  179  0 1.86333

    Вот я ввожу например Holly, мне нужно перезаписать все символы на текущей строке после него.

    19 марта 2014 г. 14:39
  • using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    partial class Form1
    {	static	void	Main()
    	{
    //		Можно строки прочесть из файла
    //		string FileName = "";
    //		List<string> StringLst = File.ReadAllLines (FileName).ToList();
    
    //		Можно сформировать их программно
    		List<string>	StringLst = new List<string>();	
    		string	StringFind = "Holly";
    		string	StringForChange ="	Qwertyuiop";
    		int		I=0;
    		StringLst.Add	(	"1		Buddy	4.2		289		2	5.69667"	);	
    		StringLst.Add	(	"2		Holly	3.8		179		0	1.86333" );
    		for	(	int i=0;i<StringLst.Count;i++)
    		{	I = StringLst[i].IndexOf ( StringFind );
    			if	( I<0)	continue;
    			StringLst[i] = StringLst[i].Remove ( I+StringFind.Length ) + StringForChange;
    }	}	}


    • Изменено QazRdx 19 марта 2014 г. 16:36
    19 марта 2014 г. 16:35
  • К сожалению, очень многим экспертам не хватает внимательности в прочтении вопроса :)

    К сути. Перезаписать часть содержимого файла невозможно. Его можно только дополнить, или сформировать заново. Идея, предложенная выше, разумна. Вы читаете все строки файла, формируете нечто вроде базы данных (в простейшем случае, массив слов), и, далее, на его основе, производите поиск и замену.

    В C++ для этих целей можно воспользоваться классами файловых потоков и контейнерами (для формирования базы).


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    19 марта 2014 г. 19:00