繁体   English   中英

错误:从“Mstream”转换为非标量类型“std::string {aka std::basic_string<char> }' 请求</char>

[英]error: conversion from ‘Mstream’ to non-scalar type ‘std::string {aka std::basic_string<char>}’ requested

您能否帮我解决以下代码中的错误。

class Mstream{
     unsigned int len;
     char *str;
};

int main(){
   Mstream m1;
   std::string str=m1;// i see error at this statement
}

错误:

请求从“Mstream”转换为非标量类型“std::string {aka std::basic_string<char>}”

std::string没有将Mstream作为输入的构造函数或operator= 但是,它确实有一个以char*和 size 作为输入的构造函数:

int main(){
    Mstream m1;
    std::string str(m1.str, m1.len);
}

或者,您可以将std::string转换运算符添加到Mstream ,然后您可以将Mstream分配给std::string

class Mstream{
    unsigned int len;
    char *str;
    operator std::string() const { return std::string(str, len); }
};

int main(){
    Mstream m1;
    std::string str = m1;
}

无论哪种方式,在尝试转换为std::string之前,请确保使用有效的char*指针和长度值正确初始化Mstream

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM