小编Fra*_*hen的帖子

如何迭代unicode符号,而不是python中的字节?

鉴于重音的unicode字样u'??????',我需要剥离acute(u'?????'),并将重音格式更改为u'???+??',其中'+'代表前一个字母的锐角.

我现在所做的是使用一个有效且无法完成符号的字典:

accented_list = [u'??', u'??', u'??', u'??', u'??', u'??', u'??', u'??', u'??']
regular_list = [u'?', u'?', u'?', u'?', u'?', u'?', u'?',  u'?', u'?']
accent_dict = dict(zip(accented_list, regular_list))
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

def changeAccentFormat(word):
  for letter in accent_dict:
    if letter in word:
      its_index = word.index(letter)
      word = word[:its_index + 1] + u'+' + word[its_index + 1:]
  return word
Run Code Online (Sandbox Code Playgroud)

但是,它当然不能按预期工作.我注意到这段代码:

>>> word = u'??????'
>>> for letter in word:
...     print letter
Run Code Online (Sandbox Code Playgroud)

?
?
? …
Run Code Online (Sandbox Code Playgroud)

python unicode python-unicode

7
推荐指数
1
解决办法
713
查看次数

为什么派生类无法访问受保护的基类成员?

我有一个基类(VectorRaw)和一个派生类(Vector).

我在基类的构造函数中使用operator new来创建一个内存缓冲区,然后在派生类的构造函数中放置new以在其中放置元素.

基类具有虚拟析构函数,如果派生类的构造函数中的某些内容出错,它将进行清理.

当我尝试编译它时,会出现一个错误:所有基类的members(begin, end, end_of_reserved)都超出了所有派生类函数的作用域.

我究竟做错了什么?

这是我的代码:

template <typename T>
class VectorRaw {
protected:
    T * begin;
    T * end;
    T * end_of_reserved;

    VectorRaw(const size_t size) {
        begin = (T*) operator new (2 * size * sizeof(T));
        end = begin;
        end_of_reserved = begin + 2 * size;
    }
    virtual ~VectorRaw<T> () throw() {
        for (T * iter = begin; iter != end; ++iter) {
            iter->~T();
        }
        operator delete (begin);
        end_of_reserved = end = begin;
    }
}; …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance namespaces

1
推荐指数
1
解决办法
1133
查看次数

标签 统计

c++ ×1

inheritance ×1

namespaces ×1

python ×1

python-unicode ×1

unicode ×1