1、C++ 标准库 STL
- STL 是意义上需要与C++ 一同发布的标准库
- STL 是一套以模板技术完成的 C++类库
- STL 中包含了常用的算法和数据结构
- STL 包含了字符串类
2、Qt 和 STL
- STL 的具体实现依赖于编译器生产厂商
- STL 的 “标准” 只是其接口是标准的
— 相同的全局函数
— 相同的算法类和数据结构类
— 相同的类成员函数 - 不同厂商的编译器所带的 STL 存在差异
— 依赖于STL 开发的 C++ 程序在不同的平台上的行为可能出现差异
3、Qt 中的字符串类
— 采用 Unicode 编码(什么国家的语言都可以)
— 隐式共享技术:节省内存和不必要的拷贝
— 跨平台使用,不要考虑字符串的平台兼容性
- QString 直接支持字符串和数字的相互转换
- QString 直接支持字符串的大小比较
- QString 直接支持不同字符编码间的相互转换
- QString 直接支持
std::string
和std::wstring
- QString 直接支持正则表达式
4、QString 的成员函数
QString s = "xiebs"
;
1、s.append("123"); //字符串s后面加上123,变成xiebs123
2、s.prepend("123"); //字符串s前面加上123,变成123xiebs
3、s.replace("x","p"); //把字符串s里面的字符串x换成&,变成xieps
4、s.sprintf("%d. I'm %s,thank you!",1,"xiebs"); //带格式的转化,最终结果为1. I'm xiebs,thank you!
5、int index= s.indexof("i"); //找 s 里面 i 的下标是多少,返回的是一个整数,结果为1
6、s = s.mid(0,index); //取 0 到 index 之间的子串,结果是 x,[0,index)之间的内容
一般是这样用:s = s.mid(index, s.length()); //取 index到末尾之间的子串间
7、s = s.trimmed(); //去掉字符串s前后的空格
8、s.remove(int position, int n) //去掉字符串 s 的 position 位置开始的 n 个字符
private slots:
void onButtonClicked()
{
QPushButton* btn = reinterpret_cast<QPushButton*>(sender());
QString btnText = btn->text();
if(btnText == "<-")
{
if(btnText.length() > 0)
{
QString editText = m_edit->text();
editText.remove(editText.length()-1, 1);
m_edit->setText(editText);
}
}
else if(btnText == "C")
{
m_edit->setText("");
}
else if(btnText == "=")
{
}
else
{
m_edit->setText(m_edit->text() + btnText);
}
}