我正在尝试将十六进制值存储在字符串中,稍后会在一段时间后检索它,但是在获取值时,字符串的大小也将变为0。示例代码:
using namespace std;
int main() {
std::string s;
s.assign("\x00\x53"); // std::string s ="\x00\x53"
cout<<s.size();
}
输出即将为0
答案 0 :(得分:0)
从C ++ 14开始,我们可以选择使用string literals,使用该功能,您可以执行以下操作:
std::string s1 = "\x00\x53"s;
这将完成您期望的操作,并将返回size()
的正确值。
如果无法使用C ++ 14功能,则需要使用字符串构造函数,该构造函数将允许您指定字符串的长度。您可以这样做:
std::string s1( "\x00\x53", 2);
您可以看到两个版本here的演示。
答案 1 :(得分:0)
尝试使用\\
代替\
:
s.assign("\\x00\\x53");
现在您拥有:
#include <iostream>
using namespace std;
int main() {
std::string s;
s.assign("\\x00\\x53"); // std::string s ="\x00\x53"
cout << s.size() << endl;
cout << s << endl;
}
输出:
8
\x00\x53