字符串是std::string
没有最终有效空字符和能不能像这样的收购?:的std ::没有空字符
std::string str = "Hello World";
str.resize(str.size() - 1);
对于那些谁是好奇:
我有一个第三方函数接受一个字符串并遍历字符(使用迭代器)。不幸的是,该函数是错误的(因为它是一个开发版本)并且不能处理空字符。我没有其他签名可供选择,我无法修改该功能(如我所说,第三方,我们不想叉),同时我不想重新发明轮子。据我所知,该函数应该按照需要工作,没有空字符,所以我希望至少给它一个尝试。
迭代发生这样的:
bool nextChar(CharIntType& c)
{
if (_it == _end) return false;
c = *_it;
++_it;
return true;
}
_it
哪里被初始化为std::string::begin()
和_end
到std::string::end()
我会假设第二线将删除“d”字符。 – lisyarus
最后,你的意思是'str [str.size()]'?或'str.back()'? –
从C++ 11开始,应该总是在最后一个隐藏的空字符。尽管如此,没有任何一个迭代器会遇到,而不是该类的用户所关心的字符串的一部分。另外,'pop_back'将完成这段代码的工作。 – chris