Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передать логин и пароль на SMPT сервер https://www.cyberforum.ru/ cpp/ thread355304.html
В общем вопрос по теме топика, програмно подконнектился к smtp.mail.ru, но не знаю как передать на него свой логин и пароль Вот как послал меня сервер recv - 503 Administrative prohibition --...
Модификация AST дерева GCC C++
всем привет. есть задумка реализовать для GCC плагин расширяющий/добавляющий некоторые возможности С++ языку. проблемы со сбором информации из AST нет. могу получить любую необходимую мне...
[Build error] No rule to make target 'String.o'. Stop. C++
Здравствуйте! Набросал два файла с кодом вроди все нормально, но при компиляции файла String.h получаю следущее No rule to make target 'String.o'. Stop. ??? Не подскажите добрые люди как его...
C++ Помогите с созданием проекта не могу создать проект!!! вот что выводит когда нажимаю создать проект >WIN32 > Консольное приложение Win32 http://rghost.ru/21697351/image.png а далее если нажму сохранить он кидает вот сюда... https://www.cyberforum.ru/ cpp/ thread351861.html
C++ Стандарт C++11 опубликован! https://www.cyberforum.ru/ cpp/ thread351772.html
Как стало известно, ISO опубликовал документ стандарта C++11! Мои поздравления всем плюсовикам! Теперь C++11 - полностью и на сто процентов новый C++. Прощай, C++03… Кстати, вдруг кто захочет...
Помогите с ошибкой. Ассемблерные блоки C++
Помогите пожалуйста разобраться с ошибкой Есть header файл с описанием объекта, привожу часть кода class CBrain { public: CBrain( void ); virtual ~CBrain( void ); void SetMemDepth( UINT...
Как из нескольких картинок разного качества зделать одну хорошего C++
Вот такая проблема из названия выходит. Есть картинка в качестве 320x320 170x128 56x42 как из них сделать одну хорошую. Может кто программу какую знает, или написать может. ПОМОГИТЕ ПЛИИЗ!...
C++ Написание конвертера В общем на курсовой попалась тема конвертер следующих форматов: BMP -> AVI BMP -> EMF BMP -> ICO BMP -> JPG BMP -> RTF ICO -> BMP TIF -> PDF При чем, естественно, готовые надстройки (типа... https://www.cyberforum.ru/ cpp/ thread350916.html
C++ Программирование как профессия https://www.cyberforum.ru/ cpp/ thread350658.html
Здравствуйте форумчане, я столкнулся с проблемой, что не знаю куда двигаться дальше. По порядку расскажу что знаю и что хочу узнать. Прочитал достаточно весомые книги по с++ разных авторов, изучаю...
C++ Прочитайте пожалуйста Всем привет На многих форумах видел различные читы, даже сам один пытался создать! Во многих читах есть слишком много палевных функций или наоборот чего то не хватает! У меня просьба: Научите... https://www.cyberforum.ru/ cpp/ thread350522.html
В астрале
Эксперт С++
8029 / 4786 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
23.09.2011, 13:08 0

Кодировка 8BITMIME

23.09.2011, 13:08. Просмотров 1000. Ответов 1
Метки (Все метки)

Лучший ответ Сообщение было отмечено -=ЮрА=- как решение

Решение

Фасетик из арабики
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#ifndef ARABICA_BASE64_CODECVT_H
#define ARABICA_BASE64_CODECVT_H
///////////////////////////////////////////
//
// $Id: base64codecvt.hpp 1277 2008-08-06 22:12:05Z jez $
//
///////////////////////////////////////////
 
#include <locale>
#include <SAX/ArabicaConfig.hpp>
#include <Arabica/mbstate.hpp>
 
namespace Arabica
{
namespace convert
{
 
class base64codecvt : public std::codecvt<char, char, std::mbstate_t>
{
public:
  virtual ~base64codecvt() { }
 
protected:
  virtual result do_out(std::mbstate_t& state,
                        const char* from,
                        const char* from_end,
                        const char*& from_next,
                        char* to,
                        char* to_limit,
                        char*& to_next) const;
 
  virtual result do_in(std::mbstate_t& state,
                       const char* from,
                       const char* from_end,
                       const char*& from_next,
                       char* to,
                       char* to_limit,
                       char*& to_next) const;
 
  virtual result do_unshift(std::mbstate_t&  state,
                       char* to,
                       char* to_limit,
                       char*& to_next) const;
 
  virtual int do_encoding() const throw() { return -1; } 
 
  virtual bool do_always_noconv() const throw() { return false; }
 
  virtual int do_length(const std::mbstate_t&,
                        const char* from,
                        const char* end,
                        size_t max) const;
 
  virtual int do_max_length() const throw();
 
private:
  // state here is a little tricky - we need the previous char and
  // the state counter, and in some case we need to "pad" the input
  // strings.  I use these helper functions to mungle them
  // together and keep the details neater (or try to anyway)
  mutable int* state_;
  mutable const char** from_next_;
  mutable const char** from_end_;
  void grabState(std::mbstate_t& state) const;
  void grabFromNext(const char*& from_next) const { from_next_ = &from_next; }
  void grabFromEnd(const char*& from_end) const { from_end_ = &from_end; }
 
  int getState() const;
  void nextState() const;
  int getCurrentOutChar() const;
  void consumeOutChar() const;
  char getPreviousChar() const;
  void setPreviousChar(char c) const;
}; // class base64codecvt
 
} // namespace convert
} // namespace Arabica
 
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
///////////////////////////////////////////
//
// $Id: base64codecvt.cpp 1036 2007-09-10 16:21:31Z jez $
//
///////////////////////////////////////////
 
#include <convert/base64codecvt.hpp>
 
static const std::string base64_charset("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");
static const int NO_MORE = 256;
 
using namespace Arabica::convert;
 
std::codecvt_base::result base64codecvt::do_out(std::mbstate_t& state,
                        const char* from,
                        const char* from_end,
                        const char*& from_next,
                        char* to,
                        char* to_limit,
                        char*& to_next) const
{
  // convert to Base64
  grabState(state);
  grabFromNext(from_next);
  grabFromEnd(from_end);
 
  // base64 encode
  from_next = from;
  to_next = to;
 
  // generate the quad
  while((to_next != to_limit) && !((getCurrentOutChar() == NO_MORE) && (getPreviousChar() == 0))) 
  {
    char c = getCurrentOutChar();
    switch(getState())
    {
      case 0:
        *to_next++ = base64_charset[(c>>2) & 63];
        consumeOutChar();
        break;
      case 1:
        *to_next++ = base64_charset[((getPreviousChar() & 3) << 4) + ((c >> 4) & 15)];
        consumeOutChar();
        break;
      case 2:
        *to_next++ = base64_charset[((getPreviousChar() & 15) << 2) + ((c >> 6) & 3)];
        setPreviousChar(0);
        break;
      case 3:
        *to_next++ = base64_charset[(c & 63)];
        consumeOutChar();
        setPreviousChar(0);
        break;
    } // switch(s) 
 
    nextState();
 
    if((getState() == 0) && (getCurrentOutChar() == NO_MORE) && (getPreviousChar() == 0))
      break;
  } // while((from_next < from_end) && (to_next != to_end))
 
  // add padding if needed
  while((getState() != 0) && (to_next != to_limit))
  {
    *to_next++ = '=';
    nextState();
  } // while((state != 4) && (to_next != to_limit))
 
  return ((getState() == 0) && (getCurrentOutChar() == NO_MORE) && (getPreviousChar() == 0)) ? std::codecvt_base::ok : std::codecvt_base::partial;
} // do_out
 
std::codecvt_base::result base64codecvt::do_in(std::mbstate_t& state,
                       const char* from,
                       const char* from_end,
                       const char*& from_next,
                       char* to,
                       char* to_limit,
                       char*& to_next) const
{
  // decode Base64
  grabState(state);
  from_next = from;
  to_next = to;
 
  while((from_next != from_end) && (to_next != to_limit))
  {
    char b = *from_next++;
    size_t i = base64_charset.find(b);
    if(i == std::string::npos)
    {
      if(b == '=')
        nextState();
      continue;
    }
    char c = static_cast<char>(i);
 
    char p = getPreviousChar();
    switch(getState())
    {
      case 0:
        break;
      case 1:
        *to_next++ = (p << 2) | (c >> 4);
        break;
      case 2:
        *to_next++ = (p << 4) | (c >> 2);
        break;
      case 3:
        *to_next++ = (p << 6) | c;
        break;
    } // switch(getState())
    setPreviousChar(c);
    nextState();
  } // while(to != to_limit)
 
  return (from_next == from_end) ? std::codecvt_base::ok : std::codecvt_base::partial; 
} // do_in
 
std::codecvt_base::result base64codecvt::do_unshift(std::mbstate_t& state,
                            char* to,
                            char* to_limit,
                            char*& to_next) const
{
  to_next = to;
 
  // add padding if needed
  while((getState() != 0) && (to_next != to_limit))
  {
    *to_next++ = '=';
    nextState();
  } // while((state != 4) && (to_next != to_limit))
 
  return (to_next == to_limit) ? std::codecvt_base::ok : std::codecvt_base::partial;
} // do_unshift
 
int base64codecvt::do_length(const std::mbstate_t&,
                        const char* from,
                        const char* end,
                        size_t max) const
{
  // 4 base64 chars = 3 chars
  size_t length(end - from);
  size_t quads(((length-1) / 4) + 1);
  size_t chars(quads*3);
 
  // htis next bit isn't exactly right, but it's close enough
  while(chars > max)
  {
    length -= 4;
    chars -= 3;
  } // while(chars > max)
 
  return length;
} // do_length
 
int base64codecvt::do_max_length() const throw()
{
  return 2;
} // do_max_length
 
void base64codecvt::grabState(std::mbstate_t& state) const
{ 
  state_ = reinterpret_cast<int*>(&state); 
  int s = getState();
  if((s < 0) || (s > 4))
    *state_ = 0;
} // grabState
 
int base64codecvt::getState() const
{
  return (*state_) & 0xff;
} // getState
 
void base64codecvt::nextState() const
{
  int s = getState();
  s = s + 1;
  if(s == 4)
    s = 0;
 
  *state_ &= 0xffffff00;
  *state_ |= s;
} // nextOutState
 
int base64codecvt::getCurrentOutChar() const
{
  if(*from_next_ != *from_end_)
    return **from_next_;
 
  return NO_MORE;
} // getCurrentOutChar
 
char base64codecvt::getPreviousChar() const
{
  return static_cast<char>((*state_ &0xff00) >> 8);
} // getCurrentOutChar
 
void base64codecvt::setPreviousChar(char c) const
{
  int bc(c);
  bc <<= 8;
  bc &= 0xff00;
 
  *state_ &= 0xffff00ff;
  *state_ |= bc;
} // setPreviousOutChar
 
void base64codecvt::consumeOutChar() const
{
  if(*from_next_ != *from_end_)
  {
    setPreviousChar(**from_next_);
    *from_next_ = *from_next_ + 1;
  } 
  else
    setPreviousChar(0);
}  // consumeOutChar
 
// end of file


Вернуться к обсуждению:
Кодировка 8BITMIME
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2011, 13:08

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Кодировка
Есть исходники мангоса с игровым ботом, хочу его скомпилировать программой , есть некоторые слова...

Кодировка в Qt
Раньше спокойно работа в Qt v5.10 и использовал русский язык при выводе сообщений об ошибке через...

Кодировка
Мне нужно, чтобы консольная программа закрывалась после ввода определённой строки.Так вот на...

Кодировка в БД
Здравствуйте. Да, понимаю, что тема кодировок заезжена, но не могу найти путь решения казалось бы...

Кодировка
Вот код: var i: Byte; begin for i := 192 to 223 do Memo1.Lines.Add(Char(i)); end; ...

Кодировка
Доброго времени суток всем, вот решил написать простой ВК Клиент, но есть кое какие проблемы с...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.