|
CString will do only one realloc, which is time consuming, and then each insert will require a memcpy for the remainder of the string, which is fairly slow.
After playing around, out of curiosity, I came up with the following, which is about 2.2 times faster than doing a series of inserts. I also observed an additional 10 fold increase by ensuring that the CString always had at least 20 bytes allocated. (Avoiding an alloc/realloc made a huge difference.)
char dstStr[20];
const char* pSrc = orgStr;
dstStr[0] = pSrc[0];
dstStr[1] = pSrc[1];
dstStr[2] = pSrc[2];
dstStr[3] = pSrc[3];
dstStr[4] = '-';
dstStr[5] = pSrc[4];
dstStr[6] = pSrc[5];
dstStr[7] = '-';
dstStr[8] = pSrc[6];
dstStr[9] = pSrc[7];
dstStr[10] = ' ';
dstStr[11] = pSrc[8];
dstStr[12] = pSrc[9];
dstStr[13] = ':';
dstStr[14] = pSrc[10];
dstStr[15] = pSrc[11];
dstStr[16] = ':';
dstStr[17] = pSrc[12];
dstStr[18] = pSrc[13];
dstStr[19] = 0;
[EDIT: Another method, though this assumed that CString will be preallocated to 20 bytes and will remain that. Otherwise its performance degrades to near that of the insert method:
char* pBuffer = orgStr.GetBuffer(20);
pBuffer[18] = pBuffer[13];
pBuffer[17] = pBuffer[12];
pBuffer[15] = pBuffer[11];
pBuffer[14] = pBuffer[10];
pBuffer[12] = pBuffer[9];
pBuffer[11] = pBuffer[8];
pBuffer[9] = pBuffer[7];
pBuffer[8] = pBuffer[6];
pBuffer[6] = pBuffer[5];
pBuffer[5] = pBuffer[4];
pBuffer[4] = '-';
pBuffer[7] = '-';
pBuffer[10] = ' ';
pBuffer[13] = ':';
pBuffer[16] = ':';
orgStr.ReleaseBuffer(19);
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
Great!! I appreciate your help very much
If it's broken, I probably did it
bdiamond
|
|
|
|
|
And what about converting the timestamp value directly in MySQL query?
See DATE_FORMAT function in MySQL documentation .
Robert-Antonio
"CRAY is the only computer, which runs an endless loop in just 4 hours"
|
|
|
|
|
I thought about that, but I wanna make sure it doesn't break later on down the line if myself or someone else tries to use it without using DateFormat();
If it's broken, I probably did it
bdiamond
|
|
|
|
|
Hi, all!
How can I display all symbols of font file (ttf), like font creating tools do this?
Thank you in advance.
|
|
|
|
|
Any ideas on how to clear a radio button which you've selected??
Kind Regards
Caoimh
|
|
|
|
|
void CWnd::CheckDlgButton( int nIDButton, UINT nCheck );
or for radio buttons in a group use
void CWnd::CheckRadioButton( int nIDFirstButton, int nIDLastButton, int nIDCheckButton );
greatest thing is to do wot others think you cant suhredayan@omniquad.com
|
|
|
|
|
Use the CButton::SetCheck() method
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
You can use CButton::SetCheck()
Ant.
|
|
|
|
|
Should have refreshed before posting, seems David was a little quicker than me on this occasion
Ant.
|
|
|
|
|
I want to be able to get the line and position of an element in a xml document, so when when there is an error (not a parse error!, but e.g. attribute verification error)I can display the user the position in the document.
|
|
|
|
|
I don't use MSXML, but in XML4C you can use the Locator object (that's passed to your error handler) to find the current line and column. I suspect there's an equivalent class in MSXML.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
I could not find anything similar in the MSXML dom parser.
|
|
|
|
|
Hi,
I've noticed that if I set a system environment variable, it isn't recognized by any services (even if I restart them). The only thing that seems to work is a reboot. Does anyone know how to make the services recognize the newly added variables without the need for reboot?
Note that I've tried adding the system variable in two ways:
1. manually through control panel->system
2. programatically, by putting the variable in the registry and broadcasting the WM_SETTINGCHANGE MESSAGE using the SendMessageTimeout function.
Thanks..
/=/=/=/=
Deus
/=/=/=/=
|
|
|
|
|
I have to convert CString to integer under unicode debugging as below...
CString str = "123";
#ifdef _UNICODE
int i = atoi(str);
#endif
throws the error C2664: 'atoi' : cannot convert parameter 1 from 'class CString' to 'const char *'
Kindly tell me how to do this?
|
|
|
|
|
Use the W2A() macro, as in:
int i = atoi(W2A(str)); Don't forget the USES_CONVERSION statement.
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
Or use the new vc7 conversion macros, CW2A in this case, no
need for USES_CONVERSION then.
/Magnus
- I don't necessarily agree with everything I say
|
|
|
|
|
Assuming that VC7 is being used.
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
Thats why i mentioned VC7 in the post.
/Magnus
- I don't necessarily agree with everything I say
|
|
|
|
|
use
_wtoi(...)
this accepts widechar bytes.
MSN Messenger.
prakashnadar@msn.com
Tip of the day of visual C++ IDE.
"We use it before you do! Visual C++ was developed using Visual C++"
|
|
|
|
|
If you use _ttoi, it will use ANSI or wide characters as required, depending on whether you are doing a Unicode build or not (ie if _UNICODE is #defined or not)
|
|
|
|
|
Is there ANY way that i can share the capture buffer of DirectPlayVoice? Any help/pointer/hint/anything would be helpful. Thankx in advance.
-Tareq
|
|
|
|
|
could someone post the executable source code of c++ encryption & decryption??
thanks in advance
|
|
|
|
|
"XOR encryption" doesn't exist, but I think you meant applying the key directly using the XOR operation to a buffer. Note that this way of "encrypting" something is VERY insecure and can be cracked on every computer in a few seconds (of course, if you use XOR encryption as a one-time-pad it cannot, but that's another thing).
Here's a source code snippet of using key-XOR to encrypt a buffer:
void XorEncryptDecrypt(unsigned char *pBuf, unsigned long uBufLen, char *pszPassword)
{
unsigned long i;
unsigned long j = 0, uMaxKey;
uMaxKey = (unsigned long)strlen(pszPassword);
for(i = 0; i < uBufLen; i++)
{
pBuf[i] ^= (unsigned char)pszPassword[j];
j++;
if(j == uMaxKey) j = 0;
}
}
This function encrypts and decrypts a buffer (i.e. there aren't two different functions for either encrypting and decrypting). But again: this method is very insecure. If possible, search the web for AES or Rijndael, that's a very secure cipher.
Best regards,
Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
(doesn't work on NT)
|
|
|
|
|
size_type rfind(E c, size_type pos = npos) const;
What exactly the rfind function does, explain with example
|
|
|
|