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'
我使用 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'