#include <iostream>
#include <ctype.h>
#include <string>
using namespace std;
class Checker
{
string s; // обьявление строки
char ch; // переменная считываемого символа
int pos; // переменная для ввода заданной позиции в строке
public:
Checker() {}
void enterString() //функция ввода строки
{
cout << "Enter string: ";
getline(cin, s);
}
void enterPosition() // ввод нужной позиции в строке
{
cout << "Enter position: ";
cin >> pos;
}
void check() // функция определения типа позиции
{
ch = s.at(pos); // обращение к определенному елементу строки
bool check = isdigit(ch);
if (check == 0)
cout << ch << " type char" << endl;
else
cout << ch << " type int " << endl;
}
};
int main()
{
Checker ch;
ch.enterString();
ch.enterPosition();
ch.check();
system("pause");
return 0;
}
Шаблон класса
Изначально было задание реализовать класс, который бы определял тип переменной вводимой строки (int или char) , это я сделал. Теперь нужно преобразовать этот класс в шаблон класса.Помогите пожалуйста.
Код:
....
template<typename T>
class Checker
{
string s; // обьявление строки
char ch; // переменная считываемого символа
T pos; // переменная для ввода заданной позиции в строке
public:
....
void check() // функция определения типа позиции
{
ch = s.at((size_t)pos); // обращение к определенному елементу строки
bool check = isdigit(ch);
if (check == 0)
cout << ch << " type char" << endl;
else
cout << ch << " type int " << endl;
}
....
int main()
{
Checker<long> ch;
ch.enterString();
ch.enterPosition();
ch.check();
....
template<typename T>
class Checker
{
string s; // обьявление строки
char ch; // переменная считываемого символа
T pos; // переменная для ввода заданной позиции в строке
public:
....
void check() // функция определения типа позиции
{
ch = s.at((size_t)pos); // обращение к определенному елементу строки
bool check = isdigit(ch);
if (check == 0)
cout << ch << " type char" << endl;
else
cout << ch << " type int " << endl;
}
....
int main()
{
Checker<long> ch;
ch.enterString();
ch.enterPosition();
ch.check();
....
и параметр шаблона - тип позиции
спасибо,так лучше даже
int pos; // так вроде работает
Код:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
template<typename T>
class Checker
{
string s; //
char ch; //
int pos; //
public:
Checker() {}
void enterString() //
{
cout << "Enter string: ";
getline(cin, s);
}
void enterPosition() //
{
cout << "Enter position: ";
cin >> pos;
}
void check() //
{
ch = s.at(pos); //
bool check = isdigit(ch);
if (check == 0)
cout << ch << " type char" << endl;
else
cout << ch << " type int " << endl;
}
};
int main(int argc, char *argv[])
{
Checker<int> ch;
ch.enterString();
ch.enterPosition();
ch.check();
cout << "Press the enter key to continue ...";
system("PAUSE");
return EXIT_SUCCESS;
}
#include <iostream>
#include <string>
using namespace std;
template<typename T>
class Checker
{
string s; //
char ch; //
int pos; //
public:
Checker() {}
void enterString() //
{
cout << "Enter string: ";
getline(cin, s);
}
void enterPosition() //
{
cout << "Enter position: ";
cin >> pos;
}
void check() //
{
ch = s.at(pos); //
bool check = isdigit(ch);
if (check == 0)
cout << ch << " type char" << endl;
else
cout << ch << " type int " << endl;
}
};
int main(int argc, char *argv[])
{
Checker<int> ch;
ch.enterString();
ch.enterPosition();
ch.check();
cout << "Press the enter key to continue ...";
system("PAUSE");
return EXIT_SUCCESS;
}