这个问题的含义是什么?我该如何解决?
当我尝试使用它时,看起来它不符合函数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;
}
};
答案 0 :(得分:3)
您确定str()
是无法解决的功能吗?
相反,我认为fputs()
无法解决。原因是fputs
需要const char*
,但您要给它std::string
,str()
返回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 *