使用命令 std::string::substr 在 C++ 中拆分字符串
Posted
技术标签:
【中文标题】使用命令 std::string::substr 在 C++ 中拆分字符串【英文标题】:Split the string in C++ using command std::string::substr 【发布时间】:2016-03-20 03:33:33 【问题描述】:我可以得到字符串的前半部分:
insert1 = tCreatureOne.substr(0, (tCreatureOne.length) / 2
我不知道如何获取字符串的后半部分
insert2 = tCreatureOne.substr((tCreatureOne.length) / 2), ?????)
这是我的代码。
// Insert creature two in to the
//middle of creature one.Science!
// Hamster and Emu make a HamEmuster
std::string PerformScience(std::string tCreatureOne, std::string tCreatureTwo)
std::string insert1;
std::string insert2;
std::string insert3;
// first half : 0 to middle
insert1 = tCreatureOne.substr(0, (tCreatureOne.length) / 2);
// last half: from middle to the end
insert2 = tCreatureOne.substr((tCreatureOne.length) / 2), tCreatureOne.length);
insert3 = insert1 + tCreatureTwo + insert2;
return insert3;
【问题讨论】:
您不能不再次致电substr()
!签出this。
来自cplusplus.com/reference/string/string/substr 我怀疑你正在寻找string::npos
。 IE。 insert2 = tCreatureOne.substr((tCreatureOne.length) / 2), std::string::npos);
@CraigYoung std::string::npos
已经是默认设置。根本不需要指定第二个参数。
【参考方案1】:
可能最重要的开发人员技能是知道如何进行在线研究。谷歌搜索“c++ substr”显示这是最高结果:http://www.cplusplus.com/reference/string/string/substr/
在参数描述部分,len
描述如下:
要包含在子字符串中的字符数(如果字符串较短,则使用尽可能多的字符)。string::npos 的值表示直到字符串末尾的所有字符。
所以你可以写:
insert2 = tCreatureOne.substr(tCreatureOne.length() / 2), std::string::npos);
但是,请注意substr
声明如下:
string substr (size_t pos = 0, size_t len = npos) const;
意思是len
,很方便默认为npos
。
因此你可以更简单地写:
insert2 = tCreatureOne.substr(tCreatureOne.length() / 2));
然而,即使substr
没有这样方便的方法来指定“字符串的其余部分”,您仍然可以很容易地计算如下:
int totalLength = tCreatureOne.length();
int firstLength = totalLength / 2;
int remainderLength = totalLength - firstLength;
//So...
insert2 = tCreatureOne.substr(tCreatureOne.length() / 2), remainderLength);
【讨论】:
我犯了一个错误。我应该写 tCreatureOne.length() 而不是 tCreatureOne.length 谢谢你的帮助,你的回答真的帮助我理解了关于子字符串命令的一切,并帮助我按时完成了硬件【参考方案2】:πάντα ῥεῖ 在他们的评论中是正确的 - 要检索字符串的后半部分,您不需要指定第二个参数(字符串的结尾):
insert2 = tCreatureOne.substr(tCreatureOne.length() / 2);
上面的代码可以正常工作。另外,由于您使用的是std::string
,请记住将括号添加到length()
调用中。
【讨论】:
以上是关于使用命令 std::string::substr 在 C++ 中拆分字符串的主要内容,如果未能解决你的问题,请参考以下文章
为啥 std::basic_string::substr 不遵循 [begin, end) 约定?
每天一个 Linux 命令网络相关命令(ifconfigroutepingtraceroutenetstatsstelnetrcpscp)