2017-04-10 2 views
0
while(in) { 
memset(str, 0,1024); 
in.getline(str, 1024); // delim defaults to '\n' 
string output = modifyString(str); 
if (output != ""){ 
    cout << output << endl; 
    string output1 = "INSERT INTO DATA_SRC "\ 
    "VALUES (" + output + ");"; 
    cout << output1 << endl; 
    const char * command = output1.c_str(); 
    cout << output << endl; 
    rc = sqlite3_exec(db, command, callback, 0, &zErrMsg); 
    if(rc != SQLITE_OK){ 
    fprintf(stderr, "SQL error: %s\n", zErrMsg); 
    sqlite3_free(zErrMsg); 
    return 1; 
    } 
} 

ここでは、I + 2文字列をまとめています。 アウトはint: 'D3318'、 'D.A。 Klineら、「TMS誘導体のGLC分離による果実中の糖の定量」、1970、「Journal of AOAC International」、53,6,1198,1202私は2つの文字列をC++で組み合わせましたが、間違って入力してしまいました。

である。しかし、私は他の人にそれを組み合わせた後。

期待値: INSERT INTO DATA_SRC VALUES( 'D3318'、 'DA Kline'、TMS誘導体のGLC分離による果実中の糖の定量)、1970、 'Journal of AOAC International'、53,6,1198 、1202)。

現実: INSERT INTO DATA_SRC値( 'D3318'、 'DAクライン'、1970 'TMS誘導体のGLC分離によって果実中の糖の定量決意'、 'AOACでのジャーナル); rnational'、53、 6,1198,1202

私は今なぜですか?

+0

ようこそスタックオーバーフロー! [mcve]または[SSCCE(Short、Self Contained、Correct Example)]で質問を**編集してください**(http://sscce.org) – NathanOliver

+1

私はその理由を知らないあなたが表示されない 'modifyString'の中に? – crashmstr

+0

デバッガでコードをステップ実行しようとしましたか? – pm100

答えて

1

modifyString(表示していない)機能は、文字列の最後にヌルバイトをコピーしています。文字列出力関数は、C文字列と互換性を持たせるために、ヌルバイトで停止します。

関連する問題