|
|
Once you get your conversion issue worked out (follow the advice of the other posters) take a look at this thread. ASSERT[^]
I'd love to help, but unfortunatley I have prior commitments monitoring the length of my grass. :Andrew Bleakley:
|
|
|
|
|
is there any function in vc++ to convert char to char*
Thank you
|
|
|
|
|
&
e.g.
char ch = 'a';
char *pChar = &ch;
Be aware that when ch goes out of scope pChar is no longer valid.
Steve
|
|
|
|
|
If you have a char, as in
char c = 'a';
then you can get the address with &c. However, there's a problem. All the things I can think you'd want to use a char * for, assuming that the char * is a valid string until it hits a null. So, you need to do this:
char * cp = new char[2];
cp[0] = c;
cp[1] = NULL;
Then you have a pointer to a string of one character length.
Overall, you'd do better to use std::string.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
I would like to know how to predefine the name of socket in the security blocking?
Please help!
|
|
|
|
|
Greetings,
How do I make my class evaluate to a fundamental type? For example, one of my classes has a member variable that holds a number (i.e. type "int"). How do I make it so that this class (i.e. CMoneyClass BigMoney) can a) be cast as an int (i.e. int nSalary = (int)BigMoney) or that an expression involving my class evaluates to an int (i.e. a function with the declaration: SetBonus(int nSalary), can be used in the code as: SetBonus(BigMoney))?
Thank you. Any help you can provide would be greatly appreciated.
BP
|
|
|
|
|
A casting operator will work...
class CMoneyClass
{
int m_MyInt;
...
public:
operator int() const {return m_MyInt;}
...
};
|
|
|
|
|
Wow, that is awesome! So essentially I overload the casting operator in my class, and that solves both the casting issue and I can use it in any place that actually calls for an "int" (in other words, I don't have to cast it as an "int", it will automatically evaluate to an "int")?
|
|
|
|
|
Yes and the implementation doesn't have to be as simple as the example. You can write it like
any other function as long as it returns an int.
Also, you can have other type cast operators if needed.
Mark
|
|
|
|
|
Thanks Mark,
Do you know where I can find information on how to do this?
BP
|
|
|
|
|
BlitzPackage wrote: Do you know where I can find information on how to do this?
Do which?
I was just mentioning that the implementation of the operator(s) (or any operators) doesn't
need to be a simple inline function. You could do calculations, access a database, whatever it
takes to return a meaningful value of the type cast. If you break the implementation out of
the class declaration, the syntax looks like this:
class CMoneyClass
{
int m_MyInt;
...
public:
operator int() const;
operator double() const;
...
};
CMoneyClass::operator int() const
{
return m_MyInt;
}
CMoneyClass::operator double() const
{
return (double)m_MyInt;
}
I also added a different casting operator to show how you could have more than one.
Lame example but it works.
Here's a link: C++ Language Reference Cast Operator: ()[^]
Mark
|
|
|
|
|
Thanks Mark,
Your answers are very helpful.
Peace,
BP
|
|
|
|
|
My program get a warning
warning C4995: 'strcpy': name was marked as #pragma deprecated
strcpy(buff,"#test.\r\n");
I should disable the warning or using other function!
If using other function, which I should used.
I would like to have your suggestion!
Please help!
|
|
|
|
|
Unless you have a good reason to don't use any of the old CRT string functions. Instead use a string class such as MFC's CString or STL's std::string .
Steve
|
|
|
|
|
The buff is char *.
Could tell how to do this strcpy(buff, "#...") with simpliest method?
Please help!
|
|
|
|
|
Don't use char* at all (unless you have a compelling reason). If you're using MFC try using CString instead. e.g.
CString MyString1 = "Hello";
CString MyString2 = "world";
CString MyString3 = MyString1 + " " + MyString2 + ".";
CString MyString4 = MyString3;
AfxMessageBox(MyString4);
No explict buffers, no memory allocation, no buffer overruns and no worries.
Steve
|
|
|
|
|
Thank you very much!
It's alright now!
|
|
|
|
|
In direct answer to your question, to disable the warning and (automatically) to use another function, then include this line in your code:
#define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 1
This will automatically substitute secure versions of CRT functions, e.g., it will substitute the secure version strcpy_s for its unsecure counterpart strcpy. The benefit is that you do not need to make any changes to your existing code.
See "Secure Template Overloads" at http://msdn2.microsoft.com/en-us/library/ms175759(VS.80).aspx[^].
To read more about secure vs. non-secure CRT functions, see "Security Enhancements in the CRT" at http://msdn2.microsoft.com/en-us/library/8ef0s5kh(VS.80).aspx[^].
Mike
|
|
|
|
|
|
If you want to go with CRT functions, you can go its secure version strcpy_s .
Refer this[^] for more information.
[Edit] This link is already provided in Mike's reply [Edit]
|
|
|
|
|
|
Hi,
I use WinHttp to download files/pages from http or https sites. I need an progress bar but I can't find out how to get size of file which will be downloaded. Any idea ?
-----------
Mila
|
|
|
|
|
Did you try the 'IBindStatusCallback' interface? (I am not sure if it will work with HTTPS)
|
|
|
|
|
I believe everyone has seen the “favorites” or bookmarks menu in IE, it has
the amazing ability to allow the user to drag object from outside the
application (the desktop, exporer you choose), the user can also accommodate
the menu items inside the menu by dragging them around.
I know I’ve to set MNS_DRAGDROP dwStyle for the menu by using
SetMenuInfo.
I’m able to catch WM_MENUDRAG messages when I start dragging menuItems but i
dont know how to continue processing this event, i know i've to return either
MND_ENDMENU or MND_CONTINUE.
Im barley at the beginning and I was looking for tome tips and notes about
this issue, maybe someone has already done something similar before.
Thanks.
|
|
|
|