我有下面的代码行:
char sPostData[500] = "{\"name\":\"Test Unique Name 1\",\"salary\":\"123456\"}";
Run Code Online (Sandbox Code Playgroud)
而不是Test Unique Name 1我想传递一个变量值,如下所示:
string name = "JOHN";
char sPostData[500] = "{\"name\":" + name + "\",\"salary\":\"123456\"}";
Run Code Online (Sandbox Code Playgroud)
但是这样做会产生以下错误:
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 []'
Run Code Online (Sandbox Code Playgroud)
如何解决此问题并在两者之间传递变量值。谢谢
使用一些std::string。因此类似于(引号有点错误,您将对其进行纠正)
std::string PostData =
std::string{"{\"name\":"} + name + "\",\"" + salary + "\":\"123456\"}";
Run Code Online (Sandbox Code Playgroud)
以后使用PostData.c_str()代替您的sPostData....
另请参阅有关原始字符串文字的信息。对于您而言,它们很有帮助。
进一步了解std::ostringstream。例如:
std::ostringstream os;
os << "{\"name\":" << name << "\",\"" << salary
<< "\":\" << pay << "}" << std::endl;
std::string PostData = os.str();
Run Code Online (Sandbox Code Playgroud)
但是 您确实应该使用一些不错的JSON库,例如jsoncpp。您可能应该看一下第二个 示例。
如果要编写与HTTP相关的内容,请详细了解该协议,然后考虑使用HTTP客户端库(如libcurl)和/或HTTP服务器库(如libonion或Wt)或框架(如POCO或Qt)。
BTW,恕我直言,一个Linux发行版是一个更好的发展平台(甚至是交叉编译)比Windows是在你的特殊情况......(好UTF-8的支持,良好的HTTP支持,良好的JSON支持)和许多嵌入式硬件(例如RaspBerry PI)对Linux友好。
另请参见http://utf8everywhere.org/
当心C ++是一种非常困难的语言。请参阅此内容,并阅读http://norvig.com/21-days.html以获得更一般的了解。