问题标题: 酷町堂:3783 字符串删除

0
0
已解决
王俊杰
王俊杰
高级光能
高级光能

3783   字符串删除经验值:0

题目描述 Description

给出一个字符串,删除它的最后一个字符。

输入描述 Input Description

一行,一个字符串,s

输出描述 Output Description

删除最后一个字符后的字符串

样例输入 Sample Input

abcdef

样例输出 Sample Output

abcde

数据范围及提示 Data Size & Hint

字符串长度不超过100,字符串不包含空格

错误代码:

#include<iostream>
#include<string>
using namespace std;
int main(){
    string s,k;
    getline(cin,s);
    k=s.size();
    cout<<s.erase(k-1,k);
    return 0;
}

为啥报错

请大佬解答


0
0
0
0
王俊杰
王俊杰
高级光能
高级光能

#include<iostream>
#include<string>
using namespace std;
int main(){
    string s,k;
    getline(cin,s);
    k=s.size();
    s.erase(k-1,k);
    cout<<s;
    return 0;
}

还报错

0
0
0
0
王俊杰
王俊杰
高级光能
高级光能

顺便问一下这两个

s.erase(k-1,k);

cout<<s;

为啥要分开写

0
钱成
钱成
初级守护
初级守护

AC

正文:

亲,这边题目说了字符串无空格,所以不要用getline,直接用cin就行了。字符串什么的可以定义在外边。

因为是删去最后一个字符串,所以你要先求出字符串的长度:     int a=字符串.length();

然后用erase(屁话)  ,但是,擦除函数的用法是:字符串.erase(起始下标,删除长度);

所以你会报错的原因是 k被你定义成了string型,但括号里一般要填的是int型变量或常数(就是你变量定义错了)

所以要改为::    字符串.erase(k-1,1);

 

打字不易,望采纳!

 

0
我要回答