如何在C ++中的char []中传递变量值

时间:2019-06-18 08:48:17

标签: c++

我有下面的代码行:

char sPostData[500] = "{\"name\":\"Test Unique Name 1\",\"salary\":\"123456\"}";

我要传递一个类似于以下内容的变量值,而不是Test Unique Name 1

string name = "JOHN";
char sPostData[500] = "{\"name\":" + name + "\",\"salary\":\"123456\"}";

但是这样做会产生以下错误:

Error (active)  E0520   initialization with '{...}' expected for aggregate object   

Error   C2440   'initializing': cannot convert from 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' to 'char []'  

如何解决此问题并在两者之间传递变量值。谢谢

1 个答案:

答案 0 :(得分:6)

使用一些std::string。所以类似于(引号有点错误,您将对其进行纠正)

std::string PostData =
  std::string{"{\"name\":"} + name + "\",\"" + salary + "\":\"123456\"}";

以后使用PostData.c_str()代替您的sPostData。...

另请参阅原始string literals。对于您来说,它们很有帮助。

还了解有关std::ostringstream的更多信息。例如:

std::ostringstream os;
os << "{\"name\":" << name << "\",\"" << salary
   << "\":\" << pay << "}" << std::endl;
std::string PostData = os.str();

但是您确实应该使用一些不错的JSON,例如jsoncpp。您可能应该看看它的2 nd example

如果您要编写与HTTP相关的内容,请详细了解该协议,然后考虑使用HTTP服务器客户端库(例如libcurl和/或HTTP服务器库(例如libonion或{{ 3}}或WtPOCO之类的框架。

BTW,恕我直言,一个Qt是一个更好的开发平台(即使用于交叉编译),也比Windows在您的特定情况下要强。 ... (良好的UTF-8支持,良好的HTTP支持,良好的JSON支持)和许多嵌入式硬件(例如Linux distribution)对Linux友好。

另请参见RaspBerry PI

请注意,C ++是一种非常困难的语言。请参阅http://utf8everywhere.org/并阅读this,以获得更一般的见解。