#include <string>
class astring:
public: std::wstring
{
};
Класс для строк
Сначала подумалось мне взять std::wstring и добавить ему методы для конвертации в другую кодировку, но в одной книге прочел, что классы STL, с std::wstring в том числе, не имеют виртуального деструктора и наследовать от них не рекомендуется.
Так вот y меня вопросы:
1) Какой класс лучше использовать для строк, я интенсивно использую STL, поэтому лучше STL-совместимый.
2) std::wstring в MS Visual Studio 2008 использует подсчет ссылок или нет?
3) Что за кодировка такая MultiByte? Как я понял она состоит из двух частей — первый байт сохраняется в текущей региональной кодировке(которая задается непонятно где), второй байт используется в ином случае. Я прав?
применять вместе с макросом USES_CONVERSION
C конверсией я думаю разберусь (тем более, что не использую MFC), проблема в другом — как расширить класс std::wsting? Мне нужно добавить метод str.m_str(). Использовать макросы неудобно и ведет к появлению ошибок.
и
std::string == std::basic_string<char>
const value_type * = std::basic_string::c_str()
Код:
В итоге большая часть методов из wstring не наследуется в мой класс astring, например, operator=(). Целый день пытаюсь разобраться в кодировках, не понимаю уже ничего.
Код:
class astring:public wstring
{
public:
astring():wstring(){}
}
{
public:
astring():wstring(){}
}
т.е. для любого конструктора, который будешь использовать, добавляй :wstring()
Цитата: Яски
3) Что за кодировка такая MultiByte?
Это вобще не кодировка. Это просто по сути признак какой то кодировки, которая может быть в том числе и с переменным количеством байт на символ, и для хранения которой обычно используется тип на основе char *.
Тоесть это может быть что угодно начиная с ASCII до UTF-8