Commit c1db4593 authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander Trofimov

Добавлена функия для разделения std::wstring по строке. Сделано, чтобы...

Добавлена функия для разделения std::wstring по строке. Сделано, чтобы открывать файлы можно было на перезапись.

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@62647 954022d7-b5bf-4e40-9824-e11837661b57
parent 8f373ca6
......@@ -578,15 +578,15 @@ namespace NSFile
{
return m_lFilePosition;
}
bool OpenFile(const std::wstring& sFileName)
bool OpenFile(const std::wstring& sFileName, bool bRewrite = false)
{
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(_WIN64)
m_pFile = _wfopen(sFileName.c_str(), L"rb");
m_pFile = _wfopen(sFileName.c_str(), bRewrite ? L"rb+" : L"rb");
#else
BYTE* pUtf8 = NULL;
LONG lLen = 0;
CUtf8Converter::GetUtf8StringFromUnicode(sFileName.c_str(), sFileName.length(), pUtf8, lLen, false);
m_pFile = fopen((char*)pUtf8, "rb");
m_pFile = fopen((char*)pUtf8, bRewrite ? "rb+" : "rb");
delete [] pUtf8;
#endif
......
......@@ -197,6 +197,43 @@ namespace NSString
Split(wsString, nDelim, wsElements);
return wsElements;
}
static std::vector<std::wstring>& Split(const std::wstring& wsString, const std::wstring wsDelim, std::vector<std::wstring> &arrElements)
{
int nDelimLen = wsDelim.length();
int nPrevPos = 0;
if (nDelimLen > 0)
{
int nPos = wsString.find(wsDelim);
while (std::wstring::npos != nPos)
{
if (nPrevPos != nPos)
arrElements.push_back(wsString.substr(nPrevPos, nPos - nPrevPos));
nPrevPos = nPos + nDelimLen;
nPos = wsString.find(wsDelim, nPrevPos);
}
}
if (nPrevPos < wsString.length())
arrElements.push_back(wsString.substr(nPrevPos));
return arrElements;
}
static std::vector<std::wstring> Split(const std::wstring& wsString, const std::wstring& wsDelim)
{
std::vector<std::wstring> arrElements;
int nDelimLen = wsDelim.length();
if (0 == nDelimLen)
arrElements.push_back(wsString);
else if (1 == nDelimLen)
Split(wsString, wchar_t(wsDelim[0]), arrElements);
else
Split(wsString, wsDelim, arrElements);
return arrElements;
}
};
#endif // _BUILD_STRING_CROSSPLATFORM_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment