Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初始化类型为‘;的非常量引用无效;std::string&; 我试图通过C++中的字符串头文件使用函数 rtrd()/,而不使用算法。 我所做的是检查起始位置和结束位置,如果存在空间,只需使用isspace()将其删除,但当我编译时,现在出现以下错误:_C++_Std_Pass By Reference_Lvalue_Reference Binding - Fatal编程技术网

初始化类型为‘;的非常量引用无效;std::string&; 我试图通过C++中的字符串头文件使用函数 rtrd()/,而不使用算法。 我所做的是检查起始位置和结束位置,如果存在空间,只需使用isspace()将其删除,但当我编译时,现在出现以下错误:

初始化类型为‘;的非常量引用无效;std::string&; 我试图通过C++中的字符串头文件使用函数 rtrd()/,而不使用算法。 我所做的是检查起始位置和结束位置,如果存在空间,只需使用isspace()将其删除,但当我编译时,现在出现以下错误:,c++,std,pass-by-reference,lvalue,reference-binding,C++,Std,Pass By Reference,Lvalue,Reference Binding,从“const char*”类型的右值初始化类型为“std::string&{aka std::basic_string&}”的非常量引用无效 这是我的代码: #include <iostream> #include <string> using namespace std; string rtrim(string& s) { size_t i; for(i = s.length() - 1; i != (size_t)-1; i--) {

从“const char*”类型的右值初始化类型为“std::string&{aka std::basic_string&}”的非常量引用无效

这是我的代码:

#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;
}
#包括
#包括
使用名称空间std;
字符串rtrim(字符串和s){
尺寸i;
对于(i=s.length()-1;i!=(size\u t)-1;i--){
如果(!(isspace(s[i])){
打破
}
}
返回s.substr(0,i+1);
}
int main(){

cout上述代码将在堆栈上创建
std::string
的临时对象,并将其作为非常量引用传递给函数。这是危险的,因为函数可能修改对象(这没有意义)或者记住对对象的引用,并在对象已销毁后尝试将其修改到其范围之外


在函数中,实际上不需要
非常量
引用,因此只要将参数更改为
const std::string&s
,它就会工作。

上面的代码会在堆栈上创建
std::string
的临时对象,并将其作为非常量引用传递给函数。这是非常危险的修改对象(没有意义)或记住对对象的引用,并在对象已销毁后尝试将其修改到其范围之外

在函数中,实际上不需要
非常量
引用,因此只要将参数更改为
const std::string&s
,它就会工作