0

ここで、insertQuery で変数 (int と char) を連結しようとしていますが、エラーが発生します。エラーが発生しました: 型 'const char*' および 'const char [2]' の無効なオペランドがバイナリ 'operator+' にみんな私が間違っているところを案内してください..

     **string insertQuery= "insert into items   (user_id,session_id,user_sessionname,buffer)values("
                        + user + "," + session + ",'" + usrname +   "','" + buff + "')";

         sqlite3_stmt *insertStmt;
                   cout << "Creating Insert Statement" << endl;
                   sqlite3_prepare(db, insertQuery.c_str(), insertQuery.size(), &insertStmt, NULL);
                   cout << "Stepping Insert Statement" << endl;
                   if (sqlite3_step(insertStmt) != SQLITE_DONE) cout << "Didn't Insert Item!" << endl;**
4

1 に答える 1

2

char*(null 終了または null 終了を想定char[])

std::ostringstream( #include <sstream>) を使用して SQL クエリを作成することをお勧めします。

std::ostringstream s;
s << "insert into items "
  << user
  << ','
  << session;

const std::string insertQuery(s.str());

std::string連結シーケンスで一時オブジェクトを作成することによっても可能です。

const std::string insertQuery= 
    std::string("insert into items ... values(")
  + std::string(user)
  + std::string(","); // etc

char*orchar[]が null で終了していない場合は、std::stringコンストラクターにその長さを通知できます。

std::string s(buf, 2);
于 2012-07-04T08:05:56.780 に答える