C++:Getline 忽略 mqtt 消息中的“\n”

C++: Getline ignores "\n" in mqtt message

我使用 mqtt 消息发送这样的消息:mosquitto_pub -t "TOPIC1" -m "ARG1\nARG2\n"

在我的 C++ 应用程序中,我写了:

string payload = reinterpret_cast<char*>(message->payload);
std::istringstream iss(payload);
std::string arg1;
std::getline(iss, arg1);
cout << arg1 << endl;

这给了我 ARG1\nARG2\n。这里有什么问题?

这不是 C++ 问题。

您的问题是通常 \n 不会被 bash 解释为命令行参数的新行。另外mosquitto_pub不会对输入的信息做任何解释。

您可以按如下方式强制执行此操作:

mosquitto_pub -t "TOPIC1" -m $'ARG1\nARG2\n'