• 9993阅读
  • 3回复

关于QByteArray的字符串读取问题 [复制链接]

上一主题 下一主题
离线zzh
 

只看楼主 倒序阅读 楼主  发表于: 2008-02-25
— 本帖被 XChinux 执行加亮操作(2008-07-17) —
void zhu::duru()
{
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("./zzh");
  bool ok = db.open();
if(ok)
{
QString a,b,c,tmp,pc;
QByteArray temp,temp2;
int jishu = 0;
QString lujing = QFileDialog::getOpenFileName(this, tr("选择"), "./","csv (*.csv)");
QFile wenjian(lujing);
if(wenjian.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QTextStream in(&wenjian);
        in.setCodec("utf-8");
        while(!in.atEnd())
          {

            tmp=in.readLine();
              temp.append(tmp);
              for(int i=0;i<=temp.length();i++)
                {
                if(!temp.at(i)==",")//这里有错误
                      {
                          temp2.append(temp.at(i));
                         
                      }
                  else if(temp.at(i)==",")//这里有错误
                      {
                        if(jishu==0){a.append(temp2);temp2="";jishu+1;}//这里有错误
                        if(jishu==1){b.append(temp2);temp2="";jishu+1;}//这里有错误
                        if(jishu==2){c.append(temp2);temp2="";jishu+1;}//这里有错误
                       

                        }
                }
               
                pc=QString("insert into biao values("1%","2%","3%")").arg(a).arg(b).arg(c);
                QSqlQuery cr;
                cr.exec(pc);
                jishu=0;
          }
    }
}
}
我想尝试读csv文件,然后把读到的数据放在数据库里,数据库就三个字段a,b,c,make错误如下:
make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/local/Trolltech/Qt-4.3.3/mkspecs/linux-g++ -I. -I/usr/local/Trolltech/Qt-4.3.3/include/QtCore -I/usr/local/Trolltech/Qt-4.3.3/include/QtCore -I/usr/local/Trolltech/Qt-4.3.3/include/QtGui -I/usr/local/Trolltech/Qt-4.3.3/include/QtGui -I/usr/local/Trolltech/Qt-4.3.3/include/QtSql -I/usr/local/Trolltech/Qt-4.3.3/include/QtSql -I/usr/local/Trolltech/Qt-4.3.3/include -I. -I. -I. -o shixian.o shixian.cpp
shixian.cpp:75:2: 警告: 文件未以空白行结束
shixian.cpp: In member function ‘void zhu::duru()’:
shixian.cpp:44: 错误: ISO C++ 不允许比较指针和整数的值
shixian.cpp:49: 错误: ISO C++ 不允许比较指针和整数的值
shixian.cpp:51: 警告: statement 不起作用
shixian.cpp:52: 警告: statement 不起作用
shixian.cpp:53: 警告: statement 不起作用
shixian.cpp:59: 错误: expected primary-expression before ‘(’ token
shixian.cpp:59: 错误: expected `)' before numeric constant
make: *** [shixian.o] 错误 1
我的思路是,如果不是逗号,就填充数组,如果是逗号,根据计数变量,将值赋予不同的变量,然后将计数变量和数组都清空,然后再加工成SQL语句,最后放在数据库里。我把上面提示的错误都标记在代码中了。我现在该怎么解决呀?先谢谢各位了。
离线liujianboy
只看该作者 1楼 发表于: 2008-02-28
temp.at(i)==",")


temp.at(i)==',')//应该是单引号吧
离线foxyz

只看该作者 2楼 发表于: 2008-03-03
非常初级的错误,举个例子:
if(!temp.at(i)==",")//这里有错误
你了解运算符的优先级吗?如果我告诉你上边你把一个boolean的和string比较了,你觉得能不出错吗?你如果不知道优先级,麻烦你这么写:
if(!(temp.at(i)==","))
离线pywepe
只看该作者 3楼 发表于: 2009-12-22
变量名用拼音
好土
快速回复
限100 字节
 
上一个 下一个