2016-12-18 7 views
0

として、私は私はC++でのプログラミングに非常に新しいです引数

char INSERT_SQL[60]; 

以降のコード内の温度と湿度の値の後に

INSERT_SQL = "INSERT INTO 'tempLog' ('temperature', 'humidity') VALUES ('"; 
    INSERT_SQL.concat(tempInC); 
    INSERT_SQL.concat("','"); 
    INSERT_SQL.concat(humidity); 
    INSERT_SQL.concat("');"); 

を持っています更新されます。

が、私はString INSERT_SQL;の代わりChar INSERT_SQL[60];を使用している場合、私はこのエラーを取得していないinvalid array assignment

というエラーを取得しています:

コールに該当する機能'Connector::cmd_query(String&)'

にどのように私がすべきさまざまな変数を連結した長い配列を作成しますか?

答えて

2

実際にあなたがC++を書いているようです(Connector::cmd_query(String&)による)。したがって、std::stringを使用することができます。

std::string INSERT_SQL; 
/* later */ 
INSERT_SQL = "INSERT INTO 'tempLog' ('temperature', 'humidity') VALUES ('"; 
INSERT_SQL += tempInC; 
INSERT_SQL += "','"; 
INSERT_SQL += humidity; 
INSERT_SQL += "');"; 

const char*は、関数呼び出しのために必要とされるたびにINSERT_SQL.c_str()を使用してください。

+0

おかげのように見えます –

1

std :: stringは設計が難しく、構築が難しいです。

しかし、あなたは古いC関数sprintfを持っています。引数をとり、非常に柔軟性があり、SQLクエリなどの複雑な文字列を簡単に作成できます。ビルドした後、文字列(どちらの方法を選択するか)が正しいかどうかチェックするためにそれを印刷します。

文字配列文字列を渡すためのstd:;文字列に変換できます。 std :: stringsはそれに適しています。

コードが間違っmysqlの文字列につながっていることを除いて動作します。この

char query[1024]; // give yourself plenty of space; 

    int tempInC; // I'm guessing these will in fact be integers, not strings 
    int humidity; 
    sprintf(query, "\"INSERT INTO 'tempLog' ('temperature', 'humidity') 
      VALUES(' %d, %d);\n\"", tempInC, humidity); 

    printf("%s\n", query); // take a look, is the string right? 

    // this interface takes a plain char * 
    Connector::cmd_query(query); 

    // you can just assign to a std string if you want to keep the query 
    // string hanging about. std::strings are better than char buffers for 
    // medium-length persistent strings. 

    std::string savequery = query; 
関連する問題