我试图rtrim()
在不使用算法的情况下使用 c++ 中字符串头中的函数来修剪字符串。
我所做的是通过是否存在空间来检查开始和结束位置,只需使用将其删除,isspace()
但是当我编译时,现在出现此错误:
从 'const char*' 类型的右值对类型 'std::string& {aka std::basic_string&}' 的非常量引用的无效初始化</p>
这是我的代码:
#include <iostream>
#include <string>
using namespace std;
string rtrim(string& s) {
size_t i;
for(i = s.length() - 1; i != (size_t)-1; i--) {
if(!(isspace(s[i]))){
break;
}
}
return s.substr(0, i + 1);
}
int main(){
cout << "|" << rtrim(" hello world\t ") << "|" << endl;
}
每当我设置诸如string s = ( "hello world\t ");
和运行之类的参数时,cout << rtrim(s) << endl;
它似乎正在工作,但它不像上面的代码那样工作。有什么建议么?