gpt4 book ai didi

c++ - 字符串操作——需要更好的方法

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:18 24 4
gpt4 key购买 nike

我有一个要求,我需要从字符串中提取所需格式的数字,例如:

  • f001-->100
  • f100-->1
  • 2030-->302
  • 0203-->3020
  • 2031-->1302

所以上面的操作是:

  • 删除任何存在的 f 字符
  • 反转字符串
  • 从字符串中删除前导零

我写了一个在 C++ 中运行良好的代码:

int main(int argc,char* argv[])
{

string str1(argv[argc-1]);


reverse(str1.begin(),str1.end());
str1.erase(remove(str1.begin(),str1.end(),'f'),str1.end());
str1.erase(0,str1.find_first_not_of('0',0));

cout <<str1<<endl;

return 0;

}

有没有更好的方法来做同样的事情?

最佳答案

我想,下面的一个简单函数就可以完成这项工作

注意:- 这不是一个完整的程序。只是一个流程......它将解析字符串一次而不是像你的情况那样解析 3 次。我绝对希望有更好的 C++ 风格的方法,并期待相同的方法。

foo(字符* str) {

int 状态=0;

int len=strlen(str);

for(i=len-1; i>=0; i++) {

if(state==0 && str[i]!='0') { //Ignore trailing zeros
state=1;
}
else if(stare==1) {
if(str[i]=='f')
break;
//Reverse logic here, just store the char in a heap as it comes which will be returned after the for finishes
}

关于c++ - 字符串操作——需要更好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8395617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com