получить ошибку в каждой строке, которую я использовал < - PullRequest
1 голос
/ 15 января 2012

ошибка C2784: 'std :: basic_ostream <_Elem, _Traits> & std :: operator << (std :: basic_ostream <_Elem, _Traits> &, const std :: basic_string <_Elem, _Traits, _Alloc> &)': > Не удалось вывести аргумент шаблона для 'std :: basic_ostream <_Elem, _Traits> &' from> 'std :: string' c: \ Documents and settings \ rcs \ Мои документы \ Visual Studio 2010 \ projects ...

Код:

#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);
};

Ответы [ 2 ]

1 голос
/ 15 января 2012
string skedar=foo;
ofstream file;
file.open(skedar, ios::app);
skedar<<foo+"\n";

skedar - это std::string, который (по-видимому) представляет собой путь. file является ofstream. Если вы хотите записать в этот поток, вы не можете skedar << "whatever";, вам нужно вывести на ofstream:

file << foo << "\n";

То же самое для skedar.close();: это файл , который вы хотите закрыть, а не строка, которая представляет его имя файла.

0 голосов
/ 15 января 2012

Вы использовали оператор << на skedar, который является строкой. Строки не имеют оператора <<. Вы, вероятно, хотели использовать что-то вроде этого: </p>

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

Я также заметил, что у вас было:

skedar.close();

Вместо этого:

file.close();

Я забыл добавить это в первый раз.

...