最近写一个Qt小程序用到了QString的截断,在绝对路径中取文件的名字,再拼接到新路径中,用到了两个方法:
方法一:由于对QString没有深入了解,所以采用的QString-->string-->QString,代码如下:
1 std::string pur = purposelist[i].toStdString();//都转换为string
2 // qDebug()<<pur<<endl;
3 std::string sdir = dstpath.toStdString();
4
5 int pos = pur.find_last_of('/'); //找到最后/
6 std::string s(pur.substr(pos + 1));
7 sdir.append("/");
8
9 sdir.append(s);
10 QString qsdir = QString(QString::fromLocal8Bit(sdir.c_str()));
11 qDebug() << qsdir << endl;
用这种方法出现的问题是,string中的中文字符转到QString会乱码...
方法二:QString直接进行截断拼接(吐了,我好蠢)
1 //QString截断学习
2 QString src("E:/qq接收文件/MobileFile/thumb/碎裂收据.jpg");
3 qDebug()<<"original path: "<<src<<endl;
4 QString dir("E:/目标文件夹");
5 qDebug()<<"the last string '/' pos is "<<src.lastIndexOf('/')<<endl;
6 QString filename = src.right(src.size() - (src.lastIndexOf("/")+1));
7 qDebug()<<"the true filename is "<<filename<<endl;