Поиск строки в файле в C++
В языке Си строка хранится в массиве символов char, тип char может хранить букву (мы сказали только одну букву и не больше). Он также может хранить числа от -128 до 127.Поскольку компьютер понимает только числа, буквы преобразуются в цифры. Таким образом, каждый символ связан с числом. Язык Си делает это очень быстро. например:
Символ 'a' соответствует в коде ASCII числу 97. Для проверки введите alt+97.
char letter = ' на ';
printf("%c\n", буква);
страница Канал - массив типа char:
char string[]="Я программист";
Наша цель — прочитать текстовый файл и узнать, доступен ли текстовый файл. string находится в этом файле. У нас есть файл в Справочник "C:/test.txt", c содержит текст, например, простое предложение:меня зовут X и я программист.
В C, char channel[] представлен следующим образом:
e | s | u | i | s | u | n | p | r | o | g | r | a | m | m | e | u | r | '\0' |
' \0 ' указывает конец массива.
#include < iostream>
#include < фстрим>
#include < строка>
#include < стрим>
использование пространства имен std;
void searchInFile(char string[])
{
ifstream myStream("C:/test.txt");
if(myFlow)
{
int i=0,position=0;
//Чтение производится посимвольно
myFlux.clear();
//инициализируем курсор воспроизведения 0
//ios::beg: начинаем с start
myFlux.seekg(0, ios::beg);
char c;
//до тех пор, пока это не конец файла
while(myStream.get(c))
{
//увеличить позицию указателя воспроизведения
position++;
//если символ совпадает с символом
//строка, которую вы ищете в i
//то переходим к следующему символу
if(c==string[i]){
i++;
//если все символы в строке равны
//проверено, то мы нашли строку в
//файл
if(i==strlen(string)) //strlen: возвращает длину строки
printf("Искомая строка находится в позиции: %d "
" и заканчивается на позиции %d\n, position-strlen(string),position);
}
//в противном случае, если мы найдем один символ
//который не совпадает, then
//перезапускаем с 0
else
i=0;
}
}
else
printf("Невозможно открыть файл\n");
}
int main()
{
char string[]="программист";
searchFile(строка);
system("пауза");
}