Это мой пользовательский класс строка (xstring.hpp):std :: getline (std :: cin, custom_class); несоответствие типов
#include <vector>
#include <sstream>
namespace
{
using std::vector;
using std::istringstream;
template <class strT>
class xstring_base
{
private:
strT str;
public:
operator strT&() {return str;}
vector<strT>* tokenize();
// constructors
xstring_base<strT>(strT);
};
}
#include "xstring.cpp"
#include <string>
typedef xstring_base<std::string> xstring;
Я поставил operator strT&()
, чтобы имитировать поведение строки из стандартной библиотеки, где это необходимо, и этот класс работает абсолютно нормально, когда я инициализировать его с строка C-стиля, даже содержащая не-ASCII-код, например арабский, но std::getline
жалуется, что xstring не поддерживается.
Как я могу использовать getline
для ввода из cin
в этот собственный класс строк?
(я использую г ++ на Kubuntu 11.10. Дает десятки линий жалуются на несовпадений шаблон смеси ...)
Спасибо так много!
Я честно не понимаю, зачем вы хотите это сделать. Зачем делать еще одну строку? –
Поскольку мне нужны некоторые пользовательские функции, такие как токенизация, некоторые пользовательские виды преобразований и манипуляций, ... а также мне нужно, чтобы она работала на всех языках, поэтому я использовал шаблон. :-) – Haix64
@BillyIneal: Это не другая строка, похожая на внешний вид; это оболочка для добавления функций в существующий класс строк. Хотя я не могу сказать, зачем вам нужны такие функции, а не функции, отличные от членов. –