qt,加密,课后习题 ,qstring

4 篇文章 0 订阅

#include <cstdlib>
#include <stdlib.h>
#include <iostream>
#include <QVector>
#include <QString>
#include <QDebug>
 
using namespace std;
 
QVector<int>  randomPerm(int n,unsigned key){
    QVector<int> v(n);
    for(int i=0;i<n;i++){
        srandom(key++);
        v[i]= random()%n;
    }
    return v;
}
 
QString shift(const QString& text,unsigned key){
    QVector<int> temp;
    QString result;
   int n= text.length ();
   temp = randomPerm (n,key);
   for(int i=0;i<n;i++){
       result[i] = text[i].toAscii ()+temp[i];
 
    }
   return result;
}
 
QString unshift(const QString& cryptext,unsigned key){
   unsigned n = cryptext.length ();
   QVector<int> temp;
   QString result;
    temp = randomPerm (n,key);
    for(unsigned i=0;i<n;i++){
        result[i] = cryptext[i].toAscii ()-temp[i];
    }
    return result;
}
 
int main(){
    QString i = "hello,goat";
    QString temp,temp2;
    temp = shift(i,8);
    temp2 = unshift (temp,8);
    qDebug()<<QString("%1  \n %2 ").arg (temp).arg (temp2);
return 0;
 
}
 

程序自己写的,有些冗长,希望各位多多指正,一起交流一下,,


一,操作字符串:

QString str2 = "Hello";
这一行调用的QString类的构造函数是:
QString::QString(const char *str)
这个传递进来的const char *str指针以会被函数QString::fromAscii()转化为Unicode编码。默认情况下fromAscii()函数会反字符当作
Latin-1编码处理。这就是为什么我们使用中文的时候会出现乱码。一种解决方法是使用 QTextCodec::setCodecForCString()函数改变
QString:fromAscii()函数的默认行为。另一种方法是在编译的时候定义宏QT_CAST_FROM_ASCII来屏蔽上面的这个构造函数。如果程序的所有字符都必须经过 QObject::tr()函数处理,那么使用这个宏屏蔽掉这个构造函数会很方便。

QString::append()函数和+=操作符有相同的作用,就是将一个字符串追加到另一个字符串的末尾。

QString::sprintf()函数与C++中的sprintf()函数一样,可以将多个字符串及其他类型的数据以一定的格式组织顾一个字符串:
QString::sprintf("%s was born in %d","John",1988);

QString::arg()函数提供第三种字符串组合方式。这个函数是类型安全并且完全支持Unicode的。也是最常使用的:QString str = QString("%1 was born %2.").arg("John").arg("1982");

QString::insert()函数在源字符串的指定位置插入另一个字符串。

QString::prepend()函数在源字符串的开头位置插入另一个字符串。

QString;:replace()函数用指定的字符串替换源字符串中的某些字符。

QString::trimmed()函数移除字符串两端的空白字符。

QString::simplifed()除了移除字符串两端的空白字符外,还会使用单个空格字符代替字符串中出现的空白字符。

二,查询字符串数据:

QString::startsWidth("xxx",Qt::CaseSensitive)判断一个字符串是否以某个字符串开头。第一个参数是指定的字符串。第二个参数指定是否大小写敏感(默认敏感)。

QString::endsWidth()判断一个字符串否以某个字符是否以某个字符串结尾。

QString::contains()判断一个指定的字符串是否出现过。

三,比较字符串:

operator<(const QString&)、operator<=(const QString&)、operator==(const QString&)、operator>=(const QString&)、operator>(cons QString&)。

QString::localeAwareCompare(const QString&,const QString&)静态函数。比较两个字符串,小于返回负数;等于返回零;大于返回正数。该函数比较是基于本地字符集的,通常平台相关。

QString::compare(const QString&,const QString&,Qt::CaseSensitivity)静态函数可以指定是否进行大小写敏感比较。大小写敏感比较是完全基于字符的Unicode编码值的。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值