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

C++ 如何在字符串中存储十六进制值并获取字符串的值和大小,c++,C++,我试图将一个十六进制值存储在一个字符串中,然后在一段时间后检索它,但当检索不到值时,字符串的大小也是0。示例代码: using namespace std; int main() { std::string s; s.assign("\x00\x53"); // std::string s ="\x00\x53" cout<<s.size(); } 使用名称空间std; int main(){ std::字符串s; s、 赋值(“\x00\x53”);//s

我试图将一个十六进制值存储在一个字符串中,然后在一段时间后检索它,但当检索不到值时,字符串的大小也是0。示例代码:

using namespace std;
int main() {
    std::string s;
    s.assign("\x00\x53"); // std::string s ="\x00\x53"
    cout<<s.size();
}
使用名称空间std;
int main(){
std::字符串s;
s、 赋值(“\x00\x53”);//std::string s=“\x00\x53”

cout从C++14开始,我们可以选择使用,使用该功能,您可以执行以下操作:

std::string s1 = "\x00\x53"s;
std::string s1( "\x00\x53", 2);
这将执行您期望的操作,并将返回
size()
的正确值

如果无法使用C++14功能,则需要使用字符串构造函数来指定字符串的长度。可以执行以下操作:

std::string s1 = "\x00\x53"s;
std::string s1( "\x00\x53", 2);

您可以看到这两个版本的演示。

尝试使用
\
而不是
\

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;
}

查看将其更改为
“\x01\x53”
时会发生什么。您可能希望查找“以null结尾的字符串”。我正在尝试将十六进制值存储在字符串中,稍后再检索它–您所说的“十六进制值”是什么意思?一些人类可读的东西,如
0xDEADBEAF
或代码中以十六进制表示法指定的ASCII值?@Mateen Ulhaq,“\x01\x53”正在工作,但我拥有的数据类似于“\x00\x53”@箭鱼,其ASCII值以十六进制表示如果您的数据包含
'\0'
,则无法将其馈送给需要以零结尾的字符串(如
运算符)的函数