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

  • 本文关键字:变量值 char C++ 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 []'  

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

使用一些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 以获取更一般的见解。

最新更新