如何将十六进制值存储在字符串中并获取字符串的值和大小

时间:2018-12-01 06:04:23

标签: c++

我正在尝试将十六进制值存储在字符串中,稍后会在一段时间后检索它,但是在获取值时,字符串的大小也将变为0。示例代码:

using namespace std;
int main() {
    std::string s;
    s.assign("\x00\x53"); // std::string s ="\x00\x53"
    cout<<s.size();
}

输出即将为0

2 个答案:

答案 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