首页 > 解决方案 > 字符串函数不会返回字符串

问题描述

return str我似乎无法RemSpacePunct发挥作用。

我想创建一个删除字符串中空格的函数,但是当我运行代码时,它不会删除空格。

string RemSpacePunct(string str);
string sort(string str);

int main(){ 
    string s = "partial men";
    
    sort(s.begin(), s.end());
    
    RemSpacePunct(s);   
    cout << s;  
}

string RemSpacePunct(string str)
{
    //add code here
    int s, i;
    
    s = str.length();
    
    for(i = 0; i < s; i++){
        if(isalnum(str[i]) == false){
            str.erase(i, 1);
        }       
    }   
    return str;
}

标签: c++return

解决方案


您忽略了返回值。str在传递给函数时会被复制,因此您对参数执行的任何修改都不会反映回原始值。相反,您应该返回一个修改后的值 - 您会这样做,但您随后会忽略它而不是使用它:

string result = RemSpacePunct(s);   
cout << result;  

推荐阅读