diff --git a/Library/ConfigParser.cpp b/Library/ConfigParser.cpp index f10baa3d..08b41b69 100644 --- a/Library/ConfigParser.cpp +++ b/Library/ConfigParser.cpp @@ -600,17 +600,13 @@ const std::wstring& CConfigParser::ReadString(LPCTSTR section, LPCTSTR key, LPCT { if ((*iter).size() > 0) { - std::wstring strSection = (*iter); - - std::wstring::size_type pos = strSection.find_first_not_of(L" \t\r\n"); + std::wstring::size_type pos = (*iter).find_first_not_of(L" \t\r\n"); if (pos != std::wstring::npos) { - std::wstring::size_type lastPos = strSection.find_last_not_of(L" \t\r\n"); - if (pos != 0 || lastPos != (strSection.length() - 1)) - { - // Trim white-space - strSection.swap(std::wstring(strSection, pos, lastPos - pos + 1)); - } + std::wstring::size_type lastPos = (*iter).find_last_not_of(L" \t\r\n"); + + // Trim white-space + std::wstring strSection((*iter), pos, lastPos - pos + 1); const std::wstring& strStyle = GetValue(strSection, key, strDefault); @@ -1147,7 +1143,7 @@ void CConfigParser::ReadIniFile(const std::vector& iniFileMappings if (sep != std::wstring::npos && sep != 0) { std::wstring value = key.substr(sep + 1, len - sep); - key.resize(sep); + key.erase(sep); std::wstring lowerKey = StrToLower(key); if (foundKeys.insert(lowerKey).second) @@ -1159,7 +1155,7 @@ void CConfigParser::ReadIniFile(const std::vector& iniFileMappings (value[0] == L'\'' && value[valueLen - 1] == L'\''))) { valueLen -= 2; - value.swap(value.substr(1, valueLen)); + value.assign(value, 1, valueLen); } if (wcsncmp(lowerKey.c_str(), L"@include", 8) == 0) diff --git a/Library/Group.cpp b/Library/Group.cpp index cb8dede0..faeeceb6 100644 --- a/Library/Group.cpp +++ b/Library/Group.cpp @@ -67,15 +67,9 @@ std::wstring CGroup::CreateGroup(const std::wstring& str) if (pos != std::wstring::npos) { std::wstring::size_type lastPos = str.find_last_not_of(L" \t\r\n"); - if (pos != 0 || lastPos != (str.length() - 1)) - { - // Trim white-space - strTmp.swap(std::wstring(str, pos, lastPos - pos + 1)); - } - else - { - strTmp = str; - } + + // Trim white-space + strTmp.assign(str, pos, lastPos - pos + 1); // Convert to lower std::transform(strTmp.begin(), strTmp.end(), strTmp.begin(), ::towlower); diff --git a/Library/Litestep.cpp b/Library/Litestep.cpp index 23827fa6..be006e82 100644 --- a/Library/Litestep.cpp +++ b/Library/Litestep.cpp @@ -344,12 +344,12 @@ HINSTANCE ExecuteCommand(HWND Owner, LPCTSTR szCommand, int nShowCmd, LPCTSTR sz size_t quotePos2 = command.find(L"\"", quotePos + 1); if (quotePos2 != std::wstring::npos) { - args = command.substr(quotePos2 + 1); - command = command.substr(quotePos + 1, quotePos2 - quotePos - 1); + args.assign(command, quotePos2 + 1, command.length() - (quotePos2 + 1)); + command.assign(command, quotePos + 1, quotePos2 - quotePos - 1); } else { - command.erase(0, quotePos + 1); + command.erase(0, 1); } } else @@ -357,8 +357,8 @@ HINSTANCE ExecuteCommand(HWND Owner, LPCTSTR szCommand, int nShowCmd, LPCTSTR sz size_t spacePos = command.find(L" "); if (spacePos != std::wstring::npos) { - args = command.substr(spacePos + 1); - command = command.substr(0, spacePos); + args.assign(command, spacePos + 1, command.length() - (spacePos + 1)); + command.erase(spacePos); } } diff --git a/Library/Measure.cpp b/Library/Measure.cpp index ca5e001d..6d45715a 100644 --- a/Library/Measure.cpp +++ b/Library/Measure.cpp @@ -298,7 +298,7 @@ std::wstring CMeasure::ExtractWord(std::wstring& buffer) if (end != std::wstring::npos) { - ret = buffer.substr(1, end - 1); + ret.assign(buffer, 1, end - 1); ++end; } else @@ -319,7 +319,7 @@ std::wstring CMeasure::ExtractWord(std::wstring& buffer) } else { - ret = buffer.substr(0, ++end); // The separator is also returned! + ret.assign(buffer, 0, ++end); // The separator is also returned! } } } diff --git a/Library/MeterWindow.cpp b/Library/MeterWindow.cpp index 2c0f7be6..b2fa75c4 100644 --- a/Library/MeterWindow.cpp +++ b/Library/MeterWindow.cpp @@ -933,7 +933,7 @@ void CMeterWindow::RunBang(BANGCOMMAND bang, const WCHAR* arg) pos3 = args.find(L' '); if (pos3 != std::wstring::npos) { - measure = args.substr(0, pos3); + measure.assign(args, 0, pos3); args.erase(0, ++pos3); CMeasure* m = GetMeasure(measure); @@ -970,7 +970,7 @@ void CMeterWindow::RunBang(BANGCOMMAND bang, const WCHAR* arg) pos3 = args.find(L' '); if (pos3 != std::wstring::npos) { - measure = args.substr(0, pos3); + measure.assign(args, 0, pos3); ++pos3; } else @@ -4992,7 +4992,7 @@ LRESULT CMeterWindow::OnCopyData(UINT uMsg, WPARAM wParam, LPARAM lParam) std::wstring::size_type pos = str.find(' '); if (pos != std::wstring::npos) { - bang = str.substr(0, pos); + bang.assign(str, 0, pos); str.erase(0, pos + 1); arg = str; } diff --git a/Library/Rainmeter.cpp b/Library/Rainmeter.cpp index e05a4033..56613ed1 100644 --- a/Library/Rainmeter.cpp +++ b/Library/Rainmeter.cpp @@ -1746,7 +1746,7 @@ int CRainmeter::Initialize(HWND Parent, HINSTANCE Instance, LPCSTR szPath) } else if (iniFile[iniFile.length() - 1] == L'\"') { - iniFile = iniFile.substr(1, iniFile.length() - 2); + iniFile.assign(iniFile, 1, iniFile.length() - 2); } } @@ -1777,14 +1777,13 @@ int CRainmeter::Initialize(HWND Parent, HINSTANCE Instance, LPCSTR szPath) bDefaultIniLocation = true; } - // Set the log file location + // Set the log file and stats file location m_LogFile = m_StatsFile = m_IniFile; size_t logFileLen = m_LogFile.length(); if (logFileLen > 4 && _wcsicmp(m_LogFile.substr(logFileLen - 4).c_str(), L".ini") == 0) { m_LogFile.replace(logFileLen - 4, 4, L".log"); - m_StatsFile.replace(logFileLen - 4, 4, L".sta"); - m_StatsFile += L"ts"; + m_StatsFile.replace(logFileLen - 4, 4, L".stats"); } else { @@ -1910,7 +1909,7 @@ int CRainmeter::Initialize(HWND Parent, HINSTANCE Instance, LPCSTR szPath) std::wstring::size_type loc; if ((loc = m_Path.find_first_of(L':')) != std::wstring::npos) { - m_Drive = m_Path.substr(0, loc + 1); + m_Drive.assign(m_Path, 0, loc + 1); } else if (m_Path.length() >= 2 && (m_Path[0] == L'\\' || m_Path[0] == L'/') && (m_Path[1] == L'\\' || m_Path[1] == L'/')) { @@ -1922,7 +1921,7 @@ int CRainmeter::Initialize(HWND Parent, HINSTANCE Instance, LPCSTR szPath) loc = loc2; } } - m_Drive = m_Path.substr(0, loc); + m_Drive.assign(m_Path, 0, loc); } // Test that the Rainmeter.ini file is writable @@ -3224,7 +3223,8 @@ void CRainmeter::ExecuteCommand(const WCHAR* command, CMeterWindow* meterWindow) std::wstring::size_type len = strCommand.length(); if (len >= 2 && strCommand[0] == L'\"' && strCommand[len - 1] == L'\"') { - strCommand.swap(strCommand.substr(1, len - 2)); + len -= 2; + strCommand.assign(strCommand, 1, len); } PlaySound(strCommand.c_str(), NULL, flags); @@ -3255,7 +3255,7 @@ void CRainmeter::ExecuteCommand(const WCHAR* command, CMeterWindow* meterWindow) size_t pos = strCommand.find(L' '); if (pos != std::wstring::npos) { - bang = strCommand.substr(0, pos); + bang.assign(strCommand, 0, pos); strCommand.erase(0, pos + 1); arg = strCommand; } @@ -3753,7 +3753,7 @@ void CRainmeter::ResetStats() time(&long_time); newtime = localtime(&long_time); m_StatsDate = _wasctime(newtime); - m_StatsDate.resize(m_StatsDate.size() - 1); + m_StatsDate.erase(m_StatsDate.size() - 1); // Only Net measure has stats at the moment CMeasureNet::ResetStats(); diff --git a/Library/System.cpp b/Library/System.cpp index a0f2b476..7d1bacd3 100644 --- a/Library/System.cpp +++ b/Library/System.cpp @@ -1168,7 +1168,7 @@ std::wstring CSystem::GetTemporaryFile(const std::vector& iniFileM if (pos != std::wstring::npos) { - filename = iniFile.substr(pos + 1); + filename.assign(iniFile, pos + 1, iniFile.length() - (pos + 1)); } else { diff --git a/Plugins/PluginWebParser/WebParser.cpp b/Plugins/PluginWebParser/WebParser.cpp index cf391bb8..a5e1d0ec 100644 --- a/Plugins/PluginWebParser/WebParser.cpp +++ b/Plugins/PluginWebParser/WebParser.cpp @@ -1206,7 +1206,7 @@ unsigned __stdcall NetworkDownloadThreadProc(void* pParam) std::wstring::size_type pos = path.find_first_not_of(L'\\'); if (pos != std::wstring::npos) { - path = path.substr(pos); + path.erase(0, pos); } PathCanonicalize(buffer, urlData->iniFile.substr(0, urlData->iniFile.find_last_of(L'\\') + 1).c_str()); // "#CURRENTPATH#" @@ -1241,11 +1241,11 @@ unsigned __stdcall NetworkDownloadThreadProc(void* pParam) std::wstring name; if (pos2 != std::wstring::npos) { - name = url.substr(pos1, pos2 - pos1); + name.assign(url, pos1, pos2 - pos1); } else { - name = url.substr(pos1); + name.assign(url, pos1, url.length() - pos1); } if (!name.empty()) @@ -1319,8 +1319,8 @@ unsigned __stdcall NetworkDownloadThreadProc(void* pParam) std::wstring path, ext; if (pos != std::wstring::npos) { - path = fullpath.substr(0, pos); - ext = fullpath.substr(pos); + path.assign(fullpath, 0, pos); + ext.assign(fullpath, pos, fullpath.length() - pos); } else {