首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建要作为参数传递的长字符串

构建要作为参数传递的长字符串
EN

Stack Overflow用户
提问于 2016-12-18 02:27:27
回答 2查看 65关注 0票数 0

我对用C++编程很陌生,我有

代码语言:javascript
复制
char INSERT_SQL[60];

以及后面的代码

代码语言:javascript
复制
  INSERT_SQL = "INSERT INTO 'tempLog' ('temperature', 'humidity') VALUES ('";
  INSERT_SQL.concat(tempInC);
  INSERT_SQL.concat("','");
  INSERT_SQL.concat(humidity);
  INSERT_SQL.concat("');");

在温湿度值被更新之后。

但是我说invalid array assignment是错误的

如果我使用String INSERT_SQL;而不是Char INSERT_SQL[60];,那么我会得到以下错误:

没有调用'Connector::cmd_query(String&)'的匹配函数

我应该如何构建一个长数组,即将不同的变量连接在一起?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-18 02:35:46

看起来您确实在编写C++ (根据Connector::cmd_query(String&))。因此,您可以使用std::string

代码语言:javascript
复制
std::string INSERT_SQL;
/* later */
INSERT_SQL = "INSERT INTO 'tempLog' ('temperature', 'humidity') VALUES ('";
INSERT_SQL += tempInC;
INSERT_SQL += "','";
INSERT_SQL += humidity;
INSERT_SQL += "');";

每当函数调用需要INSERT_SQL.c_str()时,请使用const char*

票数 2
EN

Stack Overflow用户

发布于 2016-12-18 08:01:37

字符串的设计非常糟糕,很难构建一个字符串。

但是,您有旧的C函数sprintf。这需要参数,而且非常灵活,并且提供了一种构建复杂字符串(如sql查询)的简单方法。在构建字符串之后(无论您选择哪种方法),都要打印出来以检查它是否正确。

然后,可以将字符数组字符串转换为用于传递的std:;字符串。std:弦乐对此很有帮助。

代码如下所示

代码语言:javascript
复制
  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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41204931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档