Your code first copies data to chBuf, (in ReadFile()) and then copies it to strBuf (inassign()). I think the following code will copy it directly to strBuf to save a copy (every time through loop):

```
	DWORD dwRead; 
	std::string strBuf;
        strBuf.reserve(BRACKETS_NODE_BUFFER_SIZE);
	BOOL bSuccess = FALSE;
	for (;;) {	
		bSuccess = ReadFile(g_hChildStd_OUT_Rd, strBuf, BRACKETS_NODE_BUFFER_SIZE, &dwRead, NULL);
		if( ! bSuccess || dwRead == 0 ) {
			break;
		} else {
			processIncomingData(strBuf);
		}
	} 
```