C++11 如何显示C字符串的最后N个字符?

C++11 如何显示C字符串的最后N个字符?,c++11,C++11,我正在做一些编程作业,但我不知道如何显示C字符串的最后N个字符。这是我迄今为止的尝试。我还应该询问字符数并验证它。任何帮助都将不胜感激 void choice_4(char str[]) { int characters; cout << "How many characters from the end of the string do you want to display? "; cin >> characters; if (str[

我正在做一些编程作业,但我不知道如何显示C字符串的最后N个字符。这是我迄今为止的尝试。我还应该询问字符数并验证它。任何帮助都将不胜感激

void choice_4(char str[]) {
    int characters;
    cout << "How many characters from the end of the string do you want to display? ";
    cin >> characters;
    if (str[characters] != '\0')
        cout<<str.Substring(str.length - characters,characters)
}
void选项4(char str[]{
整数字符;
字符;
如果(str[字符]!='\0')

和往常一样,对于家庭作业问题,我不会给出答案,但会给出一些提示

  • 我假设“验证”您的意思是检查字符串是否足够长。例如,您无法显示只有7个字符长的字符串的最后12个字符。但是,您当前查看字符串第n个字节的尝试无法工作。如果字符串短于n个字节,您将索引它超出范围并调用未定义的行为。如果它更长–w这是完全有效的,事实上,除了小的情况外,情况也是如此——您的测试错误地返回请求的长度无效
  • 您应该做的是计算字符串的长度N,然后测试是否为N&leq;N。您可以使用标准库函数获取以NUL结尾的字符数组的长度。或者您可以自己循环它,并计算在第一个NUL字节之前看到的字节数
  • C样式字符串只是指向内存中某个字节的指针,其隐式约定是,在其后的第一个NUL字节之前的任何字节都属于该字符串。因此,如果向指针添加m&leq;N,则会得到从第m个(从零开始)字节开始的子字符串
  • 因此,为了获得包含n个字符的字符串的最后n个字符的子字符串,如何确定m

顺便说一下:NUL字节是整数值为0的
char
。您可以将其编码为
'\0'
(就像您所做的那样)但是 0 也很好。

这是C还是C++问题?C字符串没有成员函数。不想给你答案,但是这里我想有帮助:要么你可以用C字符串函数来查看C字符串,或者只需从C字符串中生成C++ STD::字符串,然后你就可以使用STD::STRI。ng成员功能。