У меня проблема с использованием строковой функции erase
с итераторами.
Приведенная ниже функция берет имена входных файлов и .ini
файлов и создает путь для выходного файла.Путь определяется как
dir + in_file + def_name + ini_file + ".txt"
Я использую erase
для удаления расширений имен входных файлов.
void Output::vDefault(string in, string ini)
{
//save names
strIn=in;
strIni=ini;
//get working dir
char mydirectory[MAX_PATH] = {""};
GetCurrentDirectory(MAX_PATH,mydirectory);
//erase extensions
strIn.erase(strIn.find_last_of('.'), strIn.end()); // error
strIni.erase(strIni.find_last_of('.'), strIni.end()); // error
//adr starts with folder
strAdr=mydirectory;
//and ends with name
//address=dir+in_file+def_name+ini_file+.txt;
strAdr+=strIn+DEFOUTNAME+strIni+".txt";
}
Запуск кода вызывает ошибку ниже:
error C2664: 'std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::erase(unsigned int,unsigned int)' : cannot convert parameter 2 from 'std::_String_iterator<_Elem,_Traits,_Alloc>' to 'unsigned int'
erase
может принимать два итератора как первый и последний.Вы можете мне помочь?Я не знаю, почему он не принимает ничего, кроме int
в моем проекте.