Вы находитесь на странице: 1из 4

Текст програми:

//---------------------------------------------------------------------------

#include <iostream>

#include <fstream>

#include <vector>

#pragma hdrstop

using namespace std;

//---------------------------------------------------------------------------

class TStringConv : public vector<char> // Наследование от vector

protected:

// int iStringLen; // Длина строки

char cCharProcessing(char cInput); // Ф-я преобразования симв.

public:

void vProcessConv(void); // Ф-я конвертации строки

TStringConv(int iStrLen = 0); // Конструктор

TStringConv(const TStringConv& a) : vector<char>()

// iStringLen = a.iStringLen;

for(unsigned int i = 0;i < a.size();i++) push_back(a[i]);

}; // Конструктор

~TStringConv(); // Деструктор

friend ifstream& operator >> (ifstream& s, TStringConv& sc) // Ввод

// sc.iStringLen = 0; /* Обнул. дл.стр*/


sc.clear(); /* Очистка */

while(!s.eof()) {

char cChar;

s.get(cChar); /* Чтение символ*/

sc.push_back(cChar); /* Запоминание */

// sc.iStringLen++;

if(sc[sc.size()-1] == '\n' || sc[sc.size()-1] == '\r') {/* Проверка конц*/

// sc.push_back('\0');

if(sc[sc.size()-1] != '\r') break;

return s;

friend ofstream& operator << (ofstream& s, TStringConv& sc) // Вывод

for(unsigned int i = 0;i < sc.size();i++) s << sc[i];

return s;

};

TStringConv::TStringConv(int iStrLen)

: vector<char>() // Вызов родительского конструктора

// iStringLen = iStrLen;

TStringConv::~TStringConv()

clear(); // Очистка вектора

void TStringConv::vProcessConv(void)

{
for(unsigned int j = 0;j < size() && (*this)[j];j++) {

char cChar = cCharProcessing((*this)[j]); /* Обработка */

(*this)[j] = cChar;

vector<TStringConv> * ppcStringProcessing(vector<TStringConv> &vscText)

for(unsigned int i = 0;i < vscText.size();i++)

vscText[i].vProcessConv(); /* Обработка */

return &vscText;

#pragma argsused

int main(int argc, char* argv[])

ifstream fileIn("Input.txt"); /* Объявл.файлы */

/* Открытие Вх. */

/* Счетчики=0 */

vector<TStringConv> vscText;

if (fileIn.bad()) { /* Удачно? */

cerr << "Cannot open input file." << endl; /* нет- Ошибка */

return 1; /* Возврат */

ofstream fileOut("Output.txt"); /* Открытие Вых.*/

if (fileOut.bad()) { /* Удачно? */

fileIn.close(); /* нет- Закр.Вх.*/

cerr << "Cannot open output file." << endl; /* Ошибка */

return 1; /* Возврат */

vscText.clear();

while (!fileIn.eof()) { /* Цикл чтения */

TStringConv scText;
fileIn >> scText; /* Чтение строки*/

vscText.push_back(scText);

ppcStringProcessing(vscText);

for(unsigned int i = 0;i < vscText.size();i++)

fileOut << vscText[i]; /* Вывод */

vscText.clear();

fileIn.close(); /* Закрытие Вх. */

fileOut.close(); /* Закрытие Вых.*/

cout << "All OK!" << endl;

cin.get(); //getch();

return 0;

char TStringConv::cCharProcessing(char cInput)

if(cInput >= 'а' && cInput <= 'я')

return cInput - 32;

else return cInput;

//---------------------------------------------------------------------------

Висновки: У даній лабораторній роботі було вивчено шаблони, використання бібліотеки STL,
вектори

Вам также может понравиться