本文整理汇总了C++中String::Array方法的典型用法代码示例。如果您正苦于以下问题:C++ String::Array方法的具体用法?C++ String::Array怎么用?C++ String::Array使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类String
的用法示例。
在下文中一共展示了String::Array方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OSMonitorFileStart
OSFileChangeData * STDCALL OSMonitorFileStart(String path, bool suppressLogging)
{
HANDLE hDirectory;
OSFileChangeData *data = (OSFileChangeData *)Allocate(sizeof(*data));
String strDirectory = path;
strDirectory.FindReplace(TEXT("\\"), TEXT("/"));
strDirectory = GetPathDirectory(strDirectory);
strDirectory.FindReplace(TEXT("/"), TEXT("\\"));
strDirectory << TEXT("\\");
scpy_n (data->strDirectory, strDirectory.Array(), _countof(data->strDirectory)-1);
hDirectory = CreateFile(data->strDirectory, FILE_LIST_DIRECTORY, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS|FILE_FLAG_OVERLAPPED, NULL);
if(hDirectory != INVALID_HANDLE_VALUE)
{
DWORD test;
zero(&data->directoryChange, sizeof(data->directoryChange));
data->directoryChange.hEvent = CreateEvent (NULL, TRUE, FALSE, NULL);
if(ReadDirectoryChangesW(hDirectory, data->changeBuffer, 2048, FALSE, FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_SIZE, &test, &data->directoryChange, NULL))
{
scpy_n (data->targetFileName, path.Array(), _countof(data->targetFileName)-1);
data->hDirectory = hDirectory;
return data;
}
else
{
int err = GetLastError();
CloseHandle(data->directoryChange.hEvent);
CloseHandle(hDirectory);
if(!suppressLogging)
Log(TEXT("OSMonitorFileStart: Unable to monitor file '%s', error %d"), path.Array(), err);
Free(data);
return NULL;
}
}
else
{
if(!suppressLogging)
{
int err = GetLastError();
Log(TEXT("OSMonitorFileStart: Unable to open directory '%s', error %d"), data->strDirectory, err);
}
Free(data);
return NULL;
}
}
示例2: LocalizeMenu
void LocalizeMenu(HMENU hMenu, LocaleStringLookup *lookup)
{
if(!lookup) lookup = locale;
int itemCount = GetMenuItemCount(hMenu);
if(itemCount == -1)
return;
bool bRTL = LocaleIsRTL(lookup);
for(int i=0; i<itemCount; i++)
{
MENUITEMINFO mii;
zero(&mii, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_SUBMENU|MIIM_STRING|MIIM_FTYPE;
GetMenuItemInfo(hMenu, i, TRUE, &mii);
if(mii.fType & MFT_SEPARATOR || mii.cch < 2)
continue;
HMENU hSubMenu = mii.hSubMenu;
String strLookup;
strLookup.SetLength(mii.cch);
mii.fMask = MIIM_STRING;
mii.dwTypeData = strLookup.Array();
mii.cch = strLookup.Length()+1;
GetMenuItemInfo(hMenu, i, TRUE, &mii);
String strName;
if(strLookup[0] == '.')
strName = strLookup.Array()+1;
else if(!lookup->HasLookup(strLookup))
strName = strLookup;
else
strName = lookup->LookupString(strLookup);
mii.fMask = MIIM_STRING|MIIM_FTYPE;
mii.dwTypeData = strName.Array();
SetMenuItemInfo(hMenu, i, TRUE, &mii);
if(hSubMenu)
LocalizeMenu(hSubMenu);
}
}
示例3: TraceCrashEnd
void STDCALL TraceCrashEnd()
{
String strStackTrace = TEXT("\r\nException Fault - Stack Trace:");
for(unsigned int i=0; i<TraceFuncList.Num(); i++)
{
if(i) strStackTrace << TEXT(" -> ");
if(!(i%10)) strStackTrace << TEXT("\r\n ");
strStackTrace << TraceFuncList[i];
}
if(TraceFuncList.Num() == MAX_STACK_TRACE)
strStackTrace << TEXT(" -> ...");
String strOut = FormattedString(TEXT("%s\r\n"), strStackTrace.Array());
OpenLogFile();
LogFile.WriteAsUTF8(strOut, strOut.Length());
LogFile.WriteAsUTF8(TEXT("\r\n"));
CloseLogFile();
OSMessageBox(TEXT("Error: Exception fault - More info in the log file.\r\n\r\nMake sure you're using the latest verison, otherwise send your log to [email protected]"));
TraceFuncList.Clear();
CriticalExit();
}
示例4: get_x264_log
void get_x264_log(void *param, int i_level, const char *psz, va_list argptr)
{
String chi;
chi << TEXT("x264: ") << String(psz);
chi.FindReplace(TEXT("%s"), TEXT("%S"));
OSDebugOutva(chi, argptr);
chi.FindReplace(TEXT("\r"), TEXT(""));
chi.FindReplace(TEXT("\n"), TEXT(""));
if (chi == TEXT("x264: OpenCL: fatal error, aborting encode") || chi == TEXT("x264: OpenCL: Invalid value."))
{
if (App->IsRunning())
{
// FIXME: currently due to the way OBS handles the stream report, if reconnect is enabled and this error happens
// outside of the 30 second "no reconnect" window, no error dialog is shown to the user. usually x264 opencl errors
// will happen immediately though.
Log(TEXT("Aborting stream due to x264 opencl error"));
App->SetStreamReport(TEXT("x264 OpenCL Error\r\n\r\nx264 encountered an error attempting to use OpenCL. This may be due to unsupported hardware or outdated drivers.\r\n\r\nIt is recommended that you remove opencl=true from your x264 advanced settings."));
PostMessage(hwndMain, OBS_REQUESTSTOP, 1, 0);
}
}
Logva(chi.Array(), argptr);
}
示例5: CheckFileIntegrity
BOOL GraphicsCaptureSource::CheckFileIntegrity(LPCTSTR strDLL)
{
HANDLE hFileTest = CreateFile(strDLL, GENERIC_READ | GENERIC_EXECUTE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if (hFileTest == INVALID_HANDLE_VALUE)
{
String strWarning;
DWORD err = GetLastError();
if (err == ERROR_FILE_NOT_FOUND)
strWarning = TEXT("Important game capture files have been deleted. This is likely due to anti-virus software. Please make sure the OBS folder is excluded or ignored from any anti-virus / security software and re-install OBS.");
else if (err == ERROR_ACCESS_DENIED)
strWarning = TEXT("Important game capture files can not be loaded. This is likely due to anti-virus or security software. Please make sure the OBS folder is excluded / ignored from any anti-virus / security software.");
else
strWarning = FormattedString(TEXT("Important game capture files can not be loaded (error %d). This is likely due to anti-virus or security software. Please make sure the OBS folder is excluded / ignored from any anti-virus / security software."), err);
Log(TEXT("GraphicsCaptureSource::CheckFileIntegrity: Error %d while accessing %s"), err, strDLL);
//not sure if we should be using messagebox here, but probably better than "help why do i have black screen"
OBSMessageBox(API->GetMainWindow(), strWarning.Array(), NULL, MB_ICONERROR | MB_OK);
return FALSE;
}
else
{
CloseHandle(hFileTest);
return TRUE;
}
}
示例6: dumpData
void dumpData(int rootCallCount, int indent=0)
{
if(indent == 0)
calculateProfileData(rootCallCount);
String indentStr;
for(int i=0; i<indent; i++)
indentStr << TEXT("| ");
CTSTR lpIndent = indent == 0 ? TEXT("") : indentStr.Array();
int perFrameCalls = numCalls/rootCallCount;
float fTimeTaken = (float)MicroToMS(avgTimeElapsed);
if(avgPercentage >= minPercentage && fTimeTaken >= minTime)
{
if(Children.Num())
Log(TEXT("%s%s - [%.3g%%] [avg time: %g ms] [avg calls per frame: %d] [children: %.3g%%] [unaccounted: %.3g%%]"), lpIndent, lpName, avgPercentage, fTimeTaken, perFrameCalls, childPercentage, unaccountedPercentage);
else
Log(TEXT("%s%s - [%.3g%%] [avg time: %g ms] [avg calls per frame: %d]"), lpIndent, lpName, avgPercentage, fTimeTaken, perFrameCalls);
}
for(unsigned int i=0; i<Children.Num(); i++)
Children[i]->dumpData(rootCallCount, indent+1);
}
示例7: dumpData
void dumpData(int rootCallCount, int indent=0)
{
if(indent == 0)
{
rootCallCount = (int)floor(rootCallCount/(double)numParallelCalls+0.5);
calculateProfileData(rootCallCount);
}
String indentStr;
for(int i=0; i<indent; i++)
indentStr << TEXT("| ");
CTSTR lpIndent = indent == 0 ? TEXT("") : indentStr.Array();
int perFrameCalls = (int)floor(numCalls/(double)rootCallCount+0.5);
float fTimeTaken = (float)MicroToMS(avgTimeElapsed);
float cpuTime = (float)MicroToMS(avgCpuTime);
float totalCpuTime = (float)cpuTimeElapsed*0.001f;
if(avgPercentage >= minPercentage && fTimeTaken >= minTime)
{
if(Children.Num())
Log(TEXT("%s%s - [%.3g%%] [avg time: %g ms] [children: %.3g%%] [unaccounted: %.3g%%]"), lpIndent, lpName, avgPercentage, fTimeTaken, childPercentage, unaccountedPercentage);
else
Log(TEXT("%s%s - [%.3g%%] [avg time: %g ms]"), lpIndent, lpName, avgPercentage, fTimeTaken);
}
for(unsigned int i=0; i<Children.Num(); i++)
Children[i].dumpData(rootCallCount, indent+1);
}
示例8: GetLVText
String GetLVText(HWND hwndList, UINT id)
{
String strText;
strText.SetLength(256);
ListView_GetItemText(hwndList, id, 0, (LPWSTR)strText.Array(), 256);
return strText;
}
示例9: GetEditText
String GetEditText(HWND hwndEdit)
{
String strText;
strText.SetLength((UINT)SendMessage(hwndEdit, WM_GETTEXTLENGTH, 0, 0));
if(strText.Length())
SendMessage(hwndEdit, WM_GETTEXT, strText.Length()+1, (LPARAM)strText.Array());
return strText;
}
示例10: GenerateGUID
VOID GenerateGUID(String &strGUID)
{
BYTE junk[20];
if (!CryptGenRandom(hProvider, sizeof(junk), junk))
return;
strGUID.SetLength(41);
HashToString(junk, strGUID.Array());
}
示例11: RefreshAspect
static void RefreshAspect(HWND hwnd, int cx, int cy)
{
int divisor = gcd(cx, cy);
String aspect = Str("Settings.Video.AspectRatioFormat");
aspect.FindReplace(L"$1", UIntString(cx / divisor));
aspect.FindReplace(L"$2", UIntString(cy / divisor));
SetWindowText(GetDlgItem(hwnd, IDC_ASPECT), aspect.Array());
}
示例12: CreatePixelShaderFromFileAsync
FuturePixelShader GraphicsSystem::CreatePixelShaderFromFileAsync(CTSTR fileName)
{
using namespace std;
using Context = FutureShaderContainer::FutureShaderContext;
wstring const fn = fileName;
auto &cs = futureShaders.contexts;
ScopedLock m(futureShaders.lock);
bool initialized = cs.find(fn) != end(cs);
Context &c = cs[fn];
if (!initialized)
{
c.readyEvent.reset(CreateEvent(nullptr, true, false, nullptr));
c.fileName = fn;
c.thread.reset(OSCreateThread(static_cast<XTHREAD>([](void *arg) -> DWORD
{
Context &c = *(Context*)arg;
XFile ShaderFile;
if (!ShaderFile.Open(c.fileName.c_str(), XFILE_READ | XFILE_SHARED, XFILE_OPENEXISTING))
return 1;
String strShader;
ShaderFile.ReadFileToString(strShader);
c.fileData = strShader.Array();
GS->CreatePixelShaderBlob(c.shaderData, strShader.Array(), c.fileName.c_str());
SetEvent(c.readyEvent.get());
return 0;
}), &c));
}
if (c.thread && WaitForSingleObject(c.readyEvent.get(), 0) == WAIT_OBJECT_0)
c.thread.reset();
return FuturePixelShader(c.readyEvent.get(), c.shaderData, c.fileData, c.fileName);
}
示例13: AppendGameCaptureLog
// Game Capture log is always appended, as requested by Jim (yes, this can result in two game capture logs in one upload)
static void AppendGameCaptureLog(String &data)
{
String path = FormattedString(L"%s\\captureHookLog.txt", OBSGetPluginDataPath().Array());
XFile f(path.Array(), XFILE_READ | XFILE_SHARED, XFILE_OPENEXISTING);
if (!f.IsOpen())
return;
String append;
f.ReadFileToString(append);
data << L"\r\n\r\nLast Game Capture Log:\r\n" << append;
}
示例14: UploadLog
bool UploadLog(String filename, LogUploadResult &result)
{
String path = FormattedString(L"%s\\logs\\%s", OBSGetAppDataPath(), filename.Array());
XFile f(path.Array(), XFILE_READ, XFILE_OPENEXISTING);
if (!f.IsOpen()) {
result.errors << FormattedString(Str("LogUpload.CannotOpenFile"), path.Array());
return false;
}
String data;
f.ReadFileToString(data);
if (data.IsEmpty()) {
result.errors << Str("LogUpload.EmptyLog");
return false;
}
AppendGameCaptureLog(data);
return UploadLogGitHub(filename.Array(), data, result);
}
示例15: HandleSetCurrentScene
json_t* OBSAPIMessageHandler::HandleSetCurrentScene(OBSAPIMessageHandler* handler, json_t* message)
{
json_t* newScene = json_object_get(message, "scene-name");
if(newScene != NULL && json_typeof(newScene) == JSON_STRING)
{
String name = json_string_value(newScene);
OBSSetScene(name.Array(), true);
}
return GetOkResponse();
}