今天想在数据库存储一组数据,因为数组的长度不是固定的,所以想存的时候是否可以存字符串,然后用固定的“,”隔开存储,取值的时候再使用split(",")取值,尝试后可取,代码如下:
void MainWindow::strSplit() { QString str = "0,1,2,3,4,5,6,7,8,9"; QStringList strs= str.split(","); foreach (QString s, strs) { int n = s.toFloat(); qDebug() << n; } }按F1后查看帮助:
Splits the string into substrings wherever sep occurs, and returns the list of those strings. If sep does not match anywhere in the string, split() returns a single-element list containing this string. cs specifies whether sep should be matched case sensitively or case insensitively. If behavior is QString::SkipEmptyParts, empty entries don't appear in the result. By default, empty entries are kept. Example: QString str = "a,,b,c"; QStringList list1 = str.split(','); // list1: [ "a", "", "b", "c" ] QStringList list2 = str.split(',', QString::SkipEmptyParts); // list2: [ "a", "b", "c" ] See also QStringList::join() and section()..cpp文件
/** * @brief MainWindow::showEvent * @param event * 界面展示事件 */ void MainWindow::showEvent(QShowEvent *event) { initF(); //初始化数组元素 showF(); //在界面展示数组元素 } /** * @brief MainWindow::str2Flot * @param f * @param strs * @param len * 字符串 用,拆分快 */ void MainWindow::str2Flot(float *fi, QString strs, int len) { QStringList strl; QString s; float value; strl = strs.split(","); //拆分 for(int i = 0;i<len;i++) { s = strl.at(i); //获取字符串集合的元素 value = s.toFloat(); //转为float类型 fi[i] = value; //数组重新赋值 } } /** * @brief MainWindow::initF * 初始化数组 */ void MainWindow::initF() { for(int i = 0;i<5;i++) { f[i] = i*2.2; } } /** * @brief MainWindow::showF * 展示数组内的元素 */ void MainWindow::showF() { QString s; for(int i = 0;i<5;i++) { s += QString::number(f[i])+" "; //字符串累加用,隔开 } s = s.left(s.size() - 1); //去掉最后一个 ' ' ui->lineEdit_2->setText(s); //展示在界面 } /** * @brief MainWindow::on_pushButton_clicked * 单机按钮 数据转换 */ void MainWindow::on_pushButton_clicked() { QString str; str = ui->lineEdit_1->text(); //获取字符串 str2Flot(f,str,5); //修改数组元素 showF(); //重新展示 }源码路径:https://download.csdn.net/download/qq_45646951/15038828