[英]How to pad and unpad std::string in c++?
我正在尝试在 VS2019 中实现以下功能:
除了我不知道如何填充和取消填充之外,所有步骤都已完成。 感谢您的宝贵意见。
以下是我的一些代码:
bool LoadFromCommandWindow::runBlock(void) {
std::cout << "Enter your message: ";
std::getline(std::cin, plainData);
if (plainData.length() == 0) return false;
for (auto k : outputSignals) // This part saves the data into buffer and then sent for Rx
{
k->bufferPut((std::byte*) &plainData, plainData.length());
}
return true;
}
更新:对于填充,我发现了这个 function:
void padTo(std::string& str, const size_t num, const char paddingChar = '\0')
if (num > str.size())
str.insert(str.size(), num - str.size(), paddingChar);
现在我怎样才能在 Rx 端取消它?
这是填充和取消填充std::string
的方法。
inline void padTo(std::string& str, size_t num, char paddingChar = '\0') {
str.append(num - str.length() % num, paddingChar);
}
inline void unpad(std::string& str, char paddingChar = '\0') {
size_t n = str.length();
while (n != 0 && str[n-1] == paddingChar)
n--;
str.resize(n);
}
请注意\0
字符在打印时是不可见的。 调试时使用不同的字符。
\0
应该足以填充文本消息。 对于填充二进制数据,一种流行的算法是PKCS#7 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.