1

错误 C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const std::basic_string<_Elem,_Traits,_Alloc> &)' : >不能从 >'std::string' c:\documents and settings\rcs\my documents\visual studio 2010\projects 推导出 'std::basic_ostream<_Elem,_Traits> &' 的模板参数...

代码是:

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include "Pacient.h"

using namespace std;

void ruajKartele(Pacient patient)
{
    int mosha;
    char gjinia;
    string foo=patient.getEmer();
    string skedar=foo;
    ofstream file;
    file.open(skedar, ios::app);
    skedar<<foo+"\n";
    mosha=patient.getMosha();
    gjinia=patient.getGjinia();
    foo=patient.getDiagnoza();
    skedar<<mosha<<"\n"<<gjinia<<"\n"<<foo<<"\n";
    foo=patient.getPrognoza();
    skedar<<foo+"\n";
    skedar<<"-----\n"; //5
    skedar.close();
}
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
//Pacient structure:
    #include <string>
class Pacient
{
protected:
    std::string emer;
    int mosha;
    char gjinia;
    std::string diagnoza;
    std::string prognoza;

public:
    Pacient(void);
~Pacient(void);
void setEmer(std::string);
void setMosha (int);
void setGjinia(char);
void setDiagnoza(std::string);
void setPrognoza(std::string);
std::string getEmer(void);
int getMosha(void);
char getGjinia(void);
std::string getDiagnoza(void);
std::string getPrognoza(void);
};
4

2 回答 2

1
string skedar=foo;
ofstream file;
file.open(skedar, ios::app);
skedar<<foo+"\n";

skedar是 a std::string,它(显然)代表一条路径。file是一个ofstream。如果您想写入该流,则不能skedar << "whatever";,您需要输出到ofstream

file << foo << "\n";

相同skedar.close();:它是您要关闭的文件,而不是表示其文件名的字符串。

于 2012-01-15T10:21:05.163 回答
0

您已经在 skedar 上使用了 << 运算符,它是一个字符串。字符串没有 << 运算符。你可能打算使用这样的东西:

file<<skedar<<mosha<<"\n"<<gjinia<<"\n"<<foo<<"\n";

我还注意到你有:

skedar.close();

而不是这个:

file.close();

我第一次忘记添加了。

于 2012-01-15T10:21:28.263 回答