C++字符串substr函数的索引问题[重复]

Posted

技术标签:

【中文标题】C++字符串substr函数的索引问题[重复]【英文标题】:Indexing issue of C++ string substr function [duplicate] 【发布时间】:2012-10-22 14:37:24 【问题描述】:

可能重复:C++ string.substr() function problem

string s = "0123456789";

cout<<s.substr(0,4)<<endl;

cout<<s.substr(4,7)<<endl;

上述代码行的输出非常出乎意料,s.substr(0,4) 给了我“0123”,s.substr(4,7) 给了我“456789”。它只期待 "456" 。我在这里遗漏了什么吗,是否有任何替代 C++ 中的 substr 函数的方法,这在第二次调用时只会给我“456”。

【问题讨论】:

这绝对是骗子,但我找不到。 @JohnDibling 这一个是完全相同的问题:***.com/questions/2477850/…我会投票关闭作为重复。 @jogojapan:这不是我想要的,但它会做。 @jogojapan:我还是得到了答案。所以谢谢。 @JohnDibling:无意冒犯,问题很简单,没有人愿意看 jogojapan 建议的复杂示例。所以,我要求把这个例子留在这里,substr()函数的用法乍一看并不明显。 【参考方案1】:

substr 的第二个参数是所需子字符串的长度,而不是结束索引。所以你想要s.substr(4,3),而不是s.substr(4,7)

【讨论】:

【参考方案2】:

substr 的第二个参数是符号数,而不是您假设的结束索引。你应该使用substr(4,3)

【讨论】:

【参考方案3】:

substr 采用初始位置和所需长度 - 请参阅 here。

试试substr(4,3)

【讨论】:

以上是关于C++字符串substr函数的索引问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章

c++字符串截取 编写函数如substr(sting s ,int n) 要求取字符串S 的第N个字符 如 substr(k123,3) 结果为2

C++ 连接两个尾部不重复字符串

[LeetCode] Longest Substring Without Repeating Characters 最长无重复字符的子串 C++语言 java语言实现

C ++中子字符串方法的问题[重复]

c++ 的 substr() 是如何工作的? [复制]

c++ string串截取,很简单来拿分吧!