字符串操作-需要更好的方式

string operation -need a better way

本文关键字:更好 方式 操作 字符串      更新时间:2023-10-16

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

  • 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(char* str) {

= 0 int状态;

int len = strlen (str);

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

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
}  

}

}