c++删除末尾字符的问题

#include<iostream>#include<string.h>usingnamespacestd;stringDeleteLastOneStr(stringst... #include <iostream>
#include <string.h>
using namespace std;
string DeleteLastOneStr(string str);
string DeleteLastStr(string);
int main()
{
//删除末尾字符直到a,即删除之后字符串以a结尾
string str = "abcdeafg";
cout << DeleteLastOneStr(str) << endl;
return 0;
}
string DeleteLastOneStr(string str)
{
if("" == str)
{
return NULL;
}
int length = str.size();
str[length-1] = '\0';
return str;
}
string DeleteLastStr(string str_input)
{
int length = str_input.size();
if(str_input[length-1] != 0)
{
while(str_input[length-1] != (char)97)
{
DeleteLastOneStr(str_input);
length--;
}
}
return str_input;
}
新手不太理解,求指点,为什么执行之后只删除了末尾的一个字符
展开
 我来答
qwn3213
推荐于2016-10-12 · TA获得超过403个赞
知道小有建树答主
回答量:219
采纳率:0%
帮助的人:97.4万
展开全部
#include <iostream>
#include <string> 
//C++中string的头文件是<string>,<string.h>是C语言中的,里面没有string数据类型
using namespace std;
/*
    修改:@qwn3213
    建议少用string,还是用char数组,string各种奇葩
*/
string DeleteLastOneStr(string str);
string DeleteLastStr(string);
int main()
{
        string str = "abcdeafg";
        cout << DeleteLastStr(str) << endl;  
        //调用错了函数,DeleteLastOneStr只是删除最后一个字符
        return 0;
}
string DeleteLastOneStr(string str)
{
        if("" == str)
        {
                return NULL;
        }
        int length = str.size();
        str.erase(length-1);
        //string不能用'\0'结束字符串,要用erase把后面的清除了
        return str;
}
string DeleteLastStr(string str_input)
{
        int length = str_input.size();
        if(str_input[length-1] != 0)
        {
                while(str_input[length-1] != (char)97)
                {
                        str_input=DeleteLastOneStr(str_input);
                        //修改后的字符串重新赋值给str_input
                        length--;
                }
        }
        return str_input;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式