我有以下代码行:
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 []'
如何解决此问题并在两者之间传入变量值。谢谢
使用一些std::string
。所以类似于(引用有点错误,你会纠正它)
std::string PostData =
std::string{"{"name":"} + name + "","" + salary + "":"123456"}";
以后使用PostData.c_str()
代替您的sPostData
....
另请阅读有关原始字符串文本的信息。在您的情况下,它们很有帮助。
另了解有关std::ostringstream
的更多信息。例如:
std::ostringstream os;
os << "{"name":" << name << "","" << salary
<< "":" << pay << "}" << std::endl;
std::string PostData = os.str();
但是你真的应该使用一些好的JSON库,比如jsoncpp。您可能应该查看其第 2 个示例。
如果您正在编写与HTTP相关的代码,请了解有关该协议的更多信息,然后考虑使用一些HTTP客户端库(如libcurl)和/或HTTP服务器库(如libonion或Wt)或框架(如POCO或Qt)。
顺便说一句,恕我直言,Linux发行版是比 Windows 更好的开发平台(即使是交叉编译),在您的特定情况下......(良好的 UTF-8 支持、良好的 HTTP 支持、良好的 JSON 支持)和许多嵌入式硬件(例如 RaspBerry PI)对 Linux 友好。
另请参阅 http://utf8everywhere.org/
请注意,C++是一种非常困难的语言。请参阅此内容并阅读 http://norvig.com/21-days.html 以获取更一般的见解。