Уроки C++
Строки и файлы в С++Сейчас вы познакомитесь с таким, весьма интересным, разделом теории программирования C++ , как “Строки и файлы”. Интересен он потому, что ведь все писали ключевые слова в поисковике, многие пользовались контекстным поиском, ну и, на конец, многие писали текстовые документы, хранящие короткую важную информацию – наподобие простой базы данных. И так начнём, нужно понимать, что строка - это массив символов и поэтому память под строки, как и под другие массивы, может выделяется, как компилятором, так и в ходе программы, т.е динамически. Давайте рассмотрим эти понятия немного подробней. const int len_str = 100; // именованная константа, определяющая длину строки. char str[len_str]; // компилятор выделяет память под строку Так же можно написать так: char a[100] = “Just do it”; или же char a[] = “Just do it”; // компилятор сам выделит память Что бы строку разместить в “динамической памяти” надо описать указатель на “char”, а затем выделить память с помощью “new”: char *str = new char[n]; char *str = “Учиться, учиться и только учиться”; Для наглядности скомпилируем пару примеров. В первом примере надо будет ввести имя и фамилию и программа соответствующе вас поприветствует:
#include "stdafx.h" #include "iostream" #include "clocale" using namespce std; int main() { setlocale(LC_ALL, "Russian"); const int n = 32; char name[n]; cout << "Введите ваши данные: " << endl << endl; cin.getline(name, n); // Соеденяем в одну строку несколько слов cout << "\n"; cout << "Бонжур " << name << endl << endl; system("PAUSE"); return 0; }
Результат:

Во втором примере вам надо будет создать текстовый файл "baza.txt" на диске C:\\ ввести некоторые данные: Ivanov I.I. Petrov P.G. Loloev O.P. Abramov A.A. Qwertin V.V. и написанная программа будет производить поиск в файле, сообщая имеется данный пользователь или нет, это можно сравнить со списком приглашённых гостей, пришедший называет свою фамилию, а администратор проверяет есть, этот человек в “списке приглашённых” или нет, при отсутствии компилятор будет просто молчать:
#include "stdafx.h" #include "iostream" #include "fstream" #include "cstring" #include "clocale" using namespce std; int main() { const int n = 101; char name[n], line[n];    // line хранит в себе проверяющуюся строку cout << "Enter the name:" << endl << endl; cin.getline(name, n); cout << endl; ifstream fin("c:\\baza.txt");    // открываем файл if (!fin) { cout << "ERROR! File no found!" << endl; return 1;} while (fin.getline(line, n)){ if (strstr(line, name)) {cout << "Found" << endl; } } system("PAUSE"); return 0; }
Результат:
