【发布时间】:2016-02-18 18:05:34
【问题描述】:
这可能是一个愚蠢的问题,但如果我有如下 C++ 字符串,
str = "the cat is black\n"
如果我删除最后一个字符,即“\n”,这是否会留下一个以空字符结尾的字符串?下面的语句是否适用于从原始字符串 str 创建一个以 null 结尾的 char *?
char *c = str.erase(str.size()-1).c_str();
【问题讨论】:
-
您可以通过将
'\0'移到那里来删除最后一个字符,因为'\0'会终止字符串。 -
@Rhymoid:这有点简化......字符串通常还会有一个更新的长度字段,如果你在字符串中间可以有一个
\0想要。 -
对于 C
'\n'删除,请参阅 stackoverflow.com/q/2693776/2410359 -
建议从“c++ c string”标签中删除C。
-
std::string::erase使字符串内部全部正确排序(所有成员函数等也是如此),因此.c_str()的行为与任何std::string对象一样(即空终止)。跨度>