我在c ++中组合了两个字符串但得到了错误的输出

时间:2017-04-10 16:52:09

标签: c++

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

在这里,我+两个字符串在一起。 最后出现的是: 'D3318',“D.A。克莱恩','通过GLC分离TMS衍生物定量测定水果中的糖',1970年,'AOAC国际期刊',53,6,1198,1202

这很好。但是在我将它与其他人结合后。

预期: 插入DATA_SRC值('D3318','DA Kline','通过GLC分离TMS衍生物定量测定水果中的糖',1970,'AOAC International杂志',53,6,1198,1202);

现实: 插入DATA_SRC值('D3318','DA Kline','通过GLC分离TMS衍生物定量测定水果中的糖',1970,'Journal of AOAC In); rnational',53,6,1198,1202

我现在不知道为什么。

1 个答案:

答案 0 :(得分:1)

您的modifyString函数(您没有显示)正在将空字节复制到字符串的末尾。字符串输出函数将在空字节上停止,以便与C字符串兼容。