gpt4 book ai didi

c++ - 接收字符串并使用它来调用 C++ 方法

转载 作者:太空宇宙 更新时间:2023-11-04 15:30:58 24 4
gpt4 key购买 nike

  • 我有一个从客户那里收到的字符串(来自 Json),现在我想打破它,以便我可以将第一部分用作函数,将其他部分用作参数等等。
  • 为了更清楚地解释它,我有一个字符串“PRINT ARTIFACTS 10”。
  • 现在我想使用 PRINT 调用函数并将“ARTIFACTS”、“10”作为该函数中的参数。

现在我这样做:客户端:(python)

data = json.dumps({"A":"PRINT","B":"ARTIFACTS","C":10})
s.send(data)

服务器端:(C++)

recv(newSd, (char*)&msg, sizeof(msg), 0);
string str(msg);
string text = msg;
bool parsingSuccessful = reader.parse( text, root );
if ((root["A"] == "PRINT") &&
(root["B"]== "ARTIFACTS")&&
(root["C"]==10)){
PRINT(ARTIFICATS,10);
}

我知道这不是正确的做法并帮助我。

谢谢。

最佳答案

您可以使用 unordered_map 实现从命令字符串到处理该命令的函数实现的映射。 .

一个示例实现可以按如下方式工作:

// A function handler takes its arguments as strings and returns some sort of result
// that can be returned to the user.
using CommandHandler = std::function<Result(std::vector<std::string> const&)>

// various handers for command requests
Result handle_print(std::vector<std::string> const& args);
Result handle_delete(std::vector<std::string> const& args);
Result handle_add(std::vector<std::string> const& args);
Result handle_version(std::vector<std::string> const& args);

// the table that holds our commands
std::unordered_map<string, CommandHandler> command_table = {
{"print", handle_print},
{"delete", handle_delete},
{"add", handle_add},
{"version", handle_version},
};

// take your json doucment, extract the first value as the command, and put the rest into an arg array:

void handle_request(Connection& connection, json const& request)
{
std::string cmd = root["A"];
std::vector<std:string> args;
// parse the rest of your arguments into an array here.

if(command_table.count(cmd))
{
// command is valid
auto& handler = command_table[cmd];
auto result = handler(args);
send_result(connection, result);
}
else
{
// send bad command error or something

send_bad_command(connection);
}
}

关于c++ - 接收字符串并使用它来调用 C++ 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52892213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com