带有额外0x0的c++字符串

c++ string with extra 0x0?

本文关键字:c++ 字符串 0x0      更新时间:2023-10-16

我有一个奇怪的字符串与0x0,有人可以帮助我吗?

string a = funxx();  // funxx is a external func from Crypto++ libary
string b = "test"

如果我打印出a和b的内容,它们都显示为"test"

a.size() is: 5
b.size() is: 4
a.length() is: 5
b.length() is: 4
for( int i = 0; i < a.size(); i++ ) {
    cout << "0x" << hex << (0xFF & static_cast<byte>(a[i])) << " ";
}
print out: 0x74 0x65 0x73 0x74 0x0
for( int i = 0; i < b.size(); i++ ) {
    cout << "0x" << hex << (0xFF & static_cast<byte>(b[i])) << " ";
}
print out: 0x74 0x65 0x73 0x74

我的问题是,为什么a.length()a.size()返回5而不是4,如何使ab相等?

概要:谢谢你的回复。我想现在问题对我来说很清楚了。来自Crypto++库的外部func在字符串中返回一个额外的null字符,并且在string中,长度被单独跟踪。我需要做的是std::string(a.c_str())

std::string中删除尾空的简单方法:

if (!str.empty() && *str.rbegin() == 0)
    str.resize(str.size() - 1);