主要代码:
//这种方法不能对中文乱序
void MainWindow::lxslot()
{
srand( (unsigned)time( NULL ) );
QString z=textEdit1->toPlainText();
int k=z.length();
//QByteArray ba= z.toLatin1();
QByteArray ba= z.toLocal8Bit();
const char *cstr = ba.data();
qDebug()<<cstr;
random_shuffle(ba.data(), ba.data()+k);
QString qstr= QString(QLatin1String(cstr));
//qDebug()<<qstr;
textEdit2->setText(qstr);
附上源码。http://pan.baidu.com/s/1o6yXsYe
请大神帮忙,最好有详细的代码。
谢谢大家了。
4 个解决方案
#1
vector<wstring> vws;
//...
random_shuffle...
#2
赵老师能否再给点详细代码。
#3
看了你csdn的方法,那个只是字节乱序了,结果是乱码。
方法思路:
把中文每个字放在单独的QString中,所有的QString都在一个数组中。
对数组的索引进行随机处理,然后根据索引的顺序依次读取QString里面的字就行了。
伪代码:
QString strs[4];
strs[0] = "世";
strs[1] = "界";
strs[2] = "你";
strs[3] = "好";
int idxs[4];
idxs[0] = 0;
idxs[1] = 1;
idxs[2] = 2;
idxs[3] = 3;
// 对idxs随机处理
std::random_shuffle(idxs, idxs + 4);
QString str_new = strs[idxs[0]] + strs[idxs[1]] + strs[idxs[2]] + strs[idxs[3]];
方法思路:
把中文每个字放在单独的QString中,所有的QString都在一个数组中。
对数组的索引进行随机处理,然后根据索引的顺序依次读取QString里面的字就行了。
伪代码:
QString strs[4];
strs[0] = "世";
strs[1] = "界";
strs[2] = "你";
strs[3] = "好";
int idxs[4];
idxs[0] = 0;
idxs[1] = 1;
idxs[2] = 2;
idxs[3] = 3;
// 对idxs随机处理
std::random_shuffle(idxs, idxs + 4);
QString str_new = strs[idxs[0]] + strs[idxs[1]] + strs[idxs[2]] + strs[idxs[3]];
#4
我已经会了。谢谢大家了。
#1
vector<wstring> vws;
//...
random_shuffle...
#2
赵老师能否再给点详细代码。
#3
看了你csdn的方法,那个只是字节乱序了,结果是乱码。
方法思路:
把中文每个字放在单独的QString中,所有的QString都在一个数组中。
对数组的索引进行随机处理,然后根据索引的顺序依次读取QString里面的字就行了。
伪代码:
QString strs[4];
strs[0] = "世";
strs[1] = "界";
strs[2] = "你";
strs[3] = "好";
int idxs[4];
idxs[0] = 0;
idxs[1] = 1;
idxs[2] = 2;
idxs[3] = 3;
// 对idxs随机处理
std::random_shuffle(idxs, idxs + 4);
QString str_new = strs[idxs[0]] + strs[idxs[1]] + strs[idxs[2]] + strs[idxs[3]];
方法思路:
把中文每个字放在单独的QString中,所有的QString都在一个数组中。
对数组的索引进行随机处理,然后根据索引的顺序依次读取QString里面的字就行了。
伪代码:
QString strs[4];
strs[0] = "世";
strs[1] = "界";
strs[2] = "你";
strs[3] = "好";
int idxs[4];
idxs[0] = 0;
idxs[1] = 1;
idxs[2] = 2;
idxs[3] = 3;
// 对idxs随机处理
std::random_shuffle(idxs, idxs + 4);
QString str_new = strs[idxs[0]] + strs[idxs[1]] + strs[idxs[2]] + strs[idxs[3]];
#4
我已经会了。谢谢大家了。