我有一个问题,使用字符串函数erase
与迭代器。string :: 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
。
另外:你不需要“保存名字”,你可以通过值*传递字符串*。 – Johnsyweb 2012-03-05 08:39:59