C++获取字符串中最后(n)个字符

13

我有一个字符串,想要获取其中某个字符(例如最后一个".")的位置,但是到目前为止我只是感到头痛。

谢谢


8
请展示你目前的代码。哪些已经可用,哪些需要帮助?请用通俗易懂的语言表述,但不要改变原意。 - abelenky
1
抱歉回复您的评论晚了,但我遇到了一些连接问题长达一天,感谢大家的回答。 - Castro Roy
4个回答

18
string lastN(string input)
{
     return input.substr(input.size() - n);
}

3
N来自哪里? - karlphillip
9
不可接受。input.size() 可能小于 n。 - Pavel P
@karlphillip 从问题中。n 表示你想要从字符串末尾获取多少个字符。 - CrazyVideoGamer

15

您是否需要使用find_last_of函数?

size_type find_last_of( const basic_string& str, size_type pos = npos ) const;
查找最后一个等于给定字符序列中任一字符的字符。搜索在pos处结束,即仅考虑[0,pos]子字符串。如果传递npos作为pos,则将搜索整个字符串。

1
那不是一个答案,而是一个猜测。 - Edward Strange
11
对我来说,这似乎是一个相当好的猜测。对于这个问题,我们除了猜测之外无能为力。 - Fred Larson

7
如果您的字符串是字符数组:
#include <cstdio>
#include <cstring>

int main(int argc, char** argv)
{
 char buf[32] = "my.little.example.string";
 char* lastDot = strrchr(buf, '.');
 printf("Position of last dot in string: %i", lastDot - buf);
 return 0;
}

...或者一个std::string:

#include <cstdio>
#include <string>

int main(int argc, char** argv)
{
 std::string str = "my.little.example.string";
 printf("Position of last dot in string: %i", str.find_last_of('.'));
 return 0;
}

1
<stdio.h>是非标准的。请使用<cstdio><string.h>同理。 - Chris Hopman

2
   #include <string>
    /**
    * return the last n characters of a string,
    * unless n >= length of the input or n <= 0, in which case return ""
    */
    string lastN(string input, int n)
    {
        int inputSize = input.size();
        return (n > 0 && inputSize > n) ? input.substr(inputSize - n) : "";
    }

2
如果输入长度小于或等于n,为什么不返回输入呢? - DrP3pp3r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接