2012-01-15 2 views
1

ошибка C2784: «станд :: basic_ostream < _Elem, _Traits> & станд :: Оператор < < (станд :: basic_ostream < _Elem, _Traits> &, Const станд: : basic_string < _Elem, _Traits, _Alloc> &) ':> не удалось вывести аргумент шаблона для' std :: basic_ostream < _Elem, _Traits> & 'from>' std :: string 'c: \ documents and settings \ rcs \ my документы \ визуальная студия 2010 \ проекты ...получать ошибки в каждой строке я использовал <<

Код:

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

ответ

1
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

Я забыл упомянуть вещь skedar.close() раньше. Я добавляю его сейчас. +1 для вас! :) – batbrat

+0

большое вам спасибо! Я работал с некоторыми проектами так долго, что мои глаза потупились! Я не могу сказать вам, сколько вы только что помогли! – Vinset

0

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

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

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

skedar.close(); 

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

file.close(); 

Я забыл добавить, что в первый раз вокруг.