Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > ошибка при компиляции: error C2664


Автор: iSpite 25.4.2010, 10:20
Код

#include <fstream>
#include <string>
using namespace std;

void main(void)
{
    string vhod="1";
    ifstream infile(vhod+".txt");
}


ошибка:
error C2664: '__thiscall std::basic_ifstream<char,struct std::char_traits<char> >::std::basic_ifstream<char,struct std::char_traits<char> >(const char *,int)' : cannot convert parameter 1
 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

правильно ли я понял, что компилятор не может конвертировать тип в нужный ему?
как исправить ошибку?

Автор: borisbn 25.4.2010, 11:01
http://cplusplus.com/reference/iostream/ifstream/ifstream/ не принимает в качестве параметра конструктора std::string.
нужно сделать
Код

ifstream infile( (vhod+".txt").c_str() );

или
Код

string fullFileName = vhod+".txt";
ifstream infile( fullFileName.c_str() );


Автор: iSpite 25.4.2010, 11:26
СПАСИБО! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)