Генератор цветов Уроки C++ Уроки Windows forms Учебники по программированию Уроки HTML Уроки CSS Готовые задания Исходники Полезные программы
регистрация доменов

Дешёвые домены


Уроки 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;
}


Результат:



Следующий урок >>