我想使用C++选择一个字符串的前8个字符。目前我的方法是创建一个8个字符长的临时字符串,并将其填充为另一个字符串的前8个字符。
然而,如果另一个字符串不足8个字符长,我就会得到不需要的空格。
string message = " ";
const char * word = holder.c_str();
for(int i = 0; i<message.length(); i++)
message[i] = word[i];
如果word
是"123456789abc"
,那么此代码可以正常工作,并且message
包含"12345678"
。
但是,如果word
更短,例如"1234"
,则message
最终变为"1234 "
如何选择字符串的前8个字符或整个字符串(如果它少于8个字符)?
substr()
是一个常量方法,即在任何情况下都不会改变对象本身。 - Slavastd::out_of_range
异常。正如 Slava 所说,std::string::substr
不会修改它所调用的字符串;它将返回一个新的字符串。如果想要在没有任何间接操作的情况下修改字符串本身,请参见 DavidSchwartz 的答案。 - cadaniluk