Yuhan Liu
Yuhan Liu

Reputation: 1

I combined two strings in c++ but get a wrong out put

 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;
  }
}

for here, I + two string together. And the out put intially is: 'D3318','D.A. Kline','Quantitative determination of sugars in fruits by GLC separation of TMS derivatives',1970,'Journal of AOAC International',53,6,1198,1202

which is good. But after I combine it to others.

Expected: INSERT INTO DATA_SRC VALUES ('D3318','D.A. Kline','Quantitative determination of sugars in fruits by GLC separation of TMS derivatives',1970,'Journal of AOAC International',53,6,1198,1202);

Reality: INSERT INTO DATA_SRC VALUES ('D3318','D.A. Kline','Quantitative determination of sugars in fruits by GLC separation of TMS derivatives',1970,'Journal of AOAC In);rnational',53,6,1198,1202

I do not now why.

Upvotes: 0

Views: 67

Answers (1)

Mark Ransom
Mark Ransom

Reputation: 308111

Your modifyString function (which you didn't show) is copying a null byte to the end of the string. The string output functions will stop on a null byte, in order to be compatible with C-strings.

Upvotes: 1

Related Questions