我该如何解决这个错误? “方法'str'无法解决”

时间:2018-06-04 07:05:34

标签: c++ c++11 operator-overloading ostringstream

这个问题的含义是什么?我该如何解决? 当我尝试使用它时,看起来它不符合函数str() 事实上,我想从rhs中取出“字符串”并将其放在this->file中,所以如果您有其他想法,那也很好。

  

无法解决方法'str'   方法'c_str'无法解析

#include <cstdio>
#include <iostream>
#include <sstream>

class MyFile {
    FILE* file;
    MyFile& operator=(const MyFile& rhs) const;
    MyFile(const MyFile& rhs);
public:
    MyFile(const char* filename) :
            file(fopen(filename, "w")) {
        if (file == NULL) {
            throw std::exception();
        }
    }
    ~MyFile() {
        fclose(file);
    }

    template<typename T>
    MyFile& operator<<(const T& rhs) {
        std::ostringstream ss;
        ss << rhs;
        if (std::fputs(ss.str().c_str(), this->file) == EOF) { // Method 'str' could not be resolved
            throw std::exception();
        }
        return *this;
    }
};

2 个答案:

答案 0 :(得分:3)

您确定str()是无法解决的功能吗? 相反,我认为fputs()无法解决。原因是fputs需要const char*,但您要给它std::stringstr()返回fputs(ss.str().c_str(), this->file)。 试试gitlab-ci.yml

答案 1 :(得分:0)

    std::ostringstream oss;
    FILE *file;
    std::string s = oss.str();
    std::cout << s << '\n';
    std::fputs(s.c_str(), file);

将ostringstream转换为std :: string,然后转换为const char *