我想改组CString变量中存在的字符。我该怎么做?
std提供了一个名为random_shuffle()的函数,可以通过以下方式对std::string进行洗牌
std::string s(“ThisIsSample”);
random_shuffle(s.first(),s.last());
但是由于CString没有访问fisrt和最后一个字符进行迭代的功能。如何在CString中使用random_shuffle?

最佳答案

使用 GetBuffer 获取字符缓冲区,并将其边界传递给std::random_shuffle:

void shuffle_cstring(CString& c)
{
    size_t len = c.GetLength();
    LPTSTR buf = c.GetBuffer(1);
    std::random_shuffle(buf, buf + len);
    c.ReleaseBuffer();
}

关于c++ - 如何在CString中使用random_shuffle?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27200104/

10-16 03:42