C++ 如何在字符串中存储十六进制值并获取字符串的值和大小
我试图将一个十六进制值存储在一个字符串中,然后在一段时间后检索它,但当检索不到值时,字符串的大小也是0。示例代码: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
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'
,则无法将其馈送给需要以零结尾的字符串(如运算符)的函数