我有下面的代码行:
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 []'
如何解决此问题并在两者之间传递变量值。谢谢
答案 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}}或Wt或POCO之类的框架。
BTW,恕我直言,一个Qt是一个更好的开发平台(即使用于交叉编译),也比Windows在您的特定情况下要强。 ... (良好的UTF-8支持,良好的HTTP支持,良好的JSON支持)和许多嵌入式硬件(例如Linux distribution)对Linux友好。
另请参见RaspBerry PI
请注意,C ++是一种非常困难的语言。请参阅http://utf8everywhere.org/并阅读this,以获得更一般的见解。