|
No!
The DWORD value is coming as 28784 in my machine
|
|
|
|
|
so, that is 0x7070... strange, but quite logical if we know that 'p' is 0x70
|
|
|
|
|
I'm sorry There was a mistake in calculating the value of 0x7070 in decimal format.
The value is 0x7070 only!!
Thanks a lot for your support!!
could you kindly specify that the statement DWORD dw='pp'; is valid in all platforms!!
I'm googling for it, but no success!!
|
|
|
|
|
toxcct wrote: 'pp' is not a valid character,
it is a valid (though discouraged) multicharacter constant , see [^].
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
Sorry for replying after so many days.. it was Deevali in India and I was in vacation.
Thanks a lot for the link. It was quite helpful.
Pratap
|
|
|
|
|
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
Raj Prathap wrote: was not aware that is a valid statement.
It is a valid statement.
Raj Prathap wrote: And still I'm not clear what will be the value of dw.
DWORD is four bytes long. The higher two bytes will be 0 and the lower two bytes will be the value 'p'. Like 0x00007070. And if it was 'pa' then value would be 0x00007061. Also upto 4 characters are possible. For example dw = 'abcd' means 0x61626364.
Raj Prathap wrote: I calculated if it is equivalent to ('p'<<8 + 'p') but no success.
The problem caused with your code is the precedence of operators. Try
DWORD dw = ( 'p' << 8 ) + 'a';
- NS -
|
|
|
|
|
Hi!
If you wanna know the Correct answer, then first respond to this.
Come online at:-
jubinc@skype
|
|
|
|
|
Raj Prathap wrote: DWORD dw='pp';
I was not aware that is a valid statement.
It is, because 'pp' is treated as an int , and since it is being assigned to a DWORD , all is well. Had you tried to assign it to a char instead, one of the letters (I can't recall which way it works) would have been dropped.
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
in my app i want to execute a batch file, and want to read the console output from that batch file.
how to do that ?
|
|
|
|
|
IO redirection might help you.
in command prompt, if abcd.bat is the batch file then I'd gove the command abcd.bat >output.txt
hope that was helpful.
|
|
|
|
|
It is possible to read the output console buffer as input using the ordinary Win32 Console API. I don't have the code here but it can definitely be done without redirection. If you can wrap your head around the highly confusing MSDN documentation on the Console API you'll have your answer.
Nothing is exactly what it seems but everything with seems can be unpicked.
|
|
|
|
|
Are you wanting something like this or this?
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
I want to do something like this:
char *str = new char[n];
Here n can be vary at runtime.
So anybody tell me how can i do this without new operator?
Manish Patel
|
|
|
|
|
Use
char *str = malloc(n*sizeof(char));
if str is local, then
foo(int n)
{
char str[n];
}
is also valid in vc6.0
Regards,
Pratap
|
|
|
|
|
std::string text(n);
const char* str = &text[0];
Remember the const , though.
Almost the same is possible with the MFC CString.
Let's think the unthinkable, let's do the undoable, let's prepare to grapple with the ineffable itself, and see if we may not eff it after all. Douglas Adams, "Dirk Gently's Holistic Detective Agency"
|
|
|
|
|
to get the char* string of a std::string, you can use the std::string::c_str() function for that
|
|
|
|
|
You are of course right.
I had changed my post from using std::vector<char> to std::string .
I obviously did it without thinking too much
Let's think the unthinkable, let's do the undoable, let's prepare to grapple with the ineffable itself, and see if we may not eff it after all. Douglas Adams, "Dirk Gently's Holistic Detective Agency"
|
|
|
|
|
Actually, it will work even for the string the way you wrote it. It is not standardized yet, but it will be soon, and all the implementation already enable this.
|
|
|
|
|
There had be a 'technical addendum' or something, requiring the std::vector to store its contained items in one continuous memory block.
Also, the complexity-requirements almost demand an implementation like this.
But for std::string, you are really at the mercy of the implementors., I guess (But it works with VC2003 and VC2005).
Let's think the unthinkable, let's do the undoable, let's prepare to grapple with the ineffable itself, and see if we may not eff it after all. Douglas Adams, "Dirk Gently's Holistic Detective Agency"
|
|
|
|
|
jhwurmbach wrote: But for std::string, you are really at the mercy of the implementors., I guess
As I said, in theory yes - but all the implementations allow this, and it will be standardized in C++ 0x.
|
|
|
|
|
The short answer is you can't.
The long answer is:-
You can use a pre-written class like std::string or CString instead of a plain character array but somewhere underneath the neat interface new will be in use if you change the memory size you require at runtime.
One alternative is to fix n but to make it large enough that there won't be a problem. e.g.
char str[1024];
This is always risky and can be wasteful but may be the right solution in some cases.
Another approach is to use BSTR s otherwise known as Bee Stings because they can be very painful. SysAllocString and realted APIs use some special Win32 magic, probably involving reserved memory or non-paged pool to do memory operations faster than ordinary new and delete . If you dig around CP and elsewhere you might even find a string class that uses BSTRs internally but has a nice easy to use CString like interface. It will still likely be less efficient than using plain character arrays though if raw speed is all you're after.
Nothing is exactly what it seems but everything with seems can be unpicked.
|
|
|
|
|
i think he was just confused about all the complaining answers he got there[^]
|
|
|
|
|
hey, you didn't gave me time to finalize the answer !
here it is[^]
enjoy
|
|
|
|
|
Ahaaa! Use STL instead!
Seriously use the STL, unless you have a good reason not too. The little code line you showed is equivalent to “char* str = (char*)malloc(n)” in C code. Use std::string instead of that and ignore the internal details (life gets complicated there).
I love C, but you have to learn to separate the concepts that apply to C from those that apply to C++.
If you use the STL liberally, then you will rarely need to allocate memory directly.
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence."Edsger Dijkstra
|
|
|
|