我有一個問題,使用字符串函數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