Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс RString, Похож на String но свой. 
:(
    Опции темы
nikitao
Дата 25.11.2005, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Делать мне было нечего и написал класс RString,похожий на String,но автомотически конвертирующий бредятину в русский текст(причем вручную и посимвольно),согласно моей кодировки.Вот код
Код

#include<iostream>
#include<conio.h>
using namespace std;
class RString{
    char *stroka;
public:
    RString(char *line)
    {
        stroka=new char[strlen(line)+1];
        strcpy(stroka,line);
        convert(true);
    }
    ~RString()
    {
        delete [] stroka;
    }
    void convert(bool RE=true)
    {
        char *p;
        p=stroka;
        if (RE==true)
            while(*p!='\0')
            {
                if ((*p>='р')&&(*p<='я'))
                    *p-=16;
                else
                if ((*p>='А')&&(*p<='п'))
                    *p-=64;
                p++;
            }
        else
            while(*p!='\0')
            {
                if ((*p>='A'-64)&&(*p<='п'-64))
                    *p+=64;
                if ((*p>='р'-16)&&(*p<='я'-16))
                    *p+=16;
                p++;
            }
    }
    friend istream &operator>>(istream &stream,RString &ob)
    {
        char *temp;
        temp=new char[5000];
        stream>>temp;
        delete [] ob.stroka;
        ob.stroka=new char[strlen(temp)+1];
        strcpy(ob.stroka,temp);
        ob.convert();
        delete [] temp;
        return stream;
    }
    friend ostream &operator<<(ostream &stream,RString &ob)
    {
        ob.convert();
        stream<<ob.stroka;
        return stream;
    }
};
int main()
{
    RString ob("ВОБЛА");
    RString ob2("с");
    cout<<ob<<endl<<ob2;
    getch();
}

Он еще не дописан,но на этом этапе возникает ошибка,которую ну в упор не вижу:
Строку "ВОБЛА" прекрасно конвертирует,а строку "п"-нет.Почему не пойму smile
Если убрать из кода
Код

else
if ((*p>='А')&&(*p<='п'))
    *p-=64;

Но тогда другая часть перестает работать(ну это очевидно)
В чем совершил ошибку??? smile

Это сообщение отредактировал(а) nikitao - 26.11.2005, 17:35


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
GrayCardinal
Дата 26.11.2005, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 2
Всего: 58



ГЫ - ГЫ
Могу предположить что эт потому, что у Вас p - объявлен как _знаковый_ char. Скорее всего, если заменить
на
unsigned char p,
то все пройдет. smile
Хотя я могу ошибаться smile

ЗЫ
старый прикол smile smile smile


--------------------
PM MAIL WWW   Вверх
nikitao
Дата 26.11.2005, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Я тоже так думал,но все мои эксперементы с unsigned char не увенчались успехом smile (хотя я несильно пробовал)


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.