473,231 Members | 1,652 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,231 software developers and data experts.

Convert System::String* to char*

Hi

Does anybody know how to convert System::String* to char*? I searched the System::String class members and did not find any. Thanks

Yifan
Nov 17 '05 #1
15 10752
"Yifan" <an*******@discussions.microsoft.com> wrote in message
news:EA**********************************@microsof t.com...
Does anybody know how to convert System::String*
to char*? I searched the System::String class
members and did not find any.


Check the docs for the meaning of PtrToStringChars()

Regards,
Will
Nov 17 '05 #2
PtrToStringChars() returns System::Char*. But I want to convert System::String* to char* which is a c-type string such as "hello". Thanks

Yifa

----- William DePalo [MVP VC++] wrote: ----

"Yifan" <an*******@discussions.microsoft.com> wrote in messag
news:EA**********************************@microsof t.com..
Does anybody know how to convert System::String
to char*? I searched the System::String clas
members and did not find any


Check the docs for the meaning of PtrToStringChars(

Regards
Wil

Nov 17 '05 #3
"Yifan" <an*******@discussions.microsoft.com> wrote in message
news:1D**********************************@microsof t.com...
PtrToStringChars() returns System::Char*. But
I want to convert System::String* to char* which
is a c-type string such as "hello".


See Win32's WideCharacterToMultiByte() or the runtime's wcstombs().

Also check the docs for the DllImport attribute and its CharSet member which
can be used to "tag" functions in external DLLs that you wish to call.

Regards,
Will
Nov 17 '05 #4

size_t wcstombs
char *mbstr
const wchar_t *wcstr
size_t count
)

wcstombs() only converts wchar_t * to char*

What I really want is to convert System::String* to char*(c-type string)
I can use System::String's ToCharArray() to convert System::String* to a Unicode character array, but it is of type __wchar_t [], and I could not convert __wchar_t [] to wchar_t * or char*, even with a Type-cast. Thanks

Yifa

----- William DePalo [MVP VC++] wrote: ----

"Yifan" <an*******@discussions.microsoft.com> wrote in messag
news:1D**********************************@microsof t.com..
PtrToStringChars() returns System::Char*. Bu
I want to convert System::String* to char* whic
is a c-type string such as "hello"


See Win32's WideCharacterToMultiByte() or the runtime's wcstombs()

Also check the docs for the DllImport attribute and its CharSet member whic
can be used to "tag" functions in external DLLs that you wish to call

Regards
Wil

Nov 17 '05 #5
"Yifan" <an*******@discussions.microsoft.com> wrote in message
news:A4**********************************@microsof t.com...
size_t wcstombs(
char *mbstr,
const wchar_t *wcstr,
size_t count
);

wcstombs() only converts wchar_t * to char*.


Yes, I know. A wchar_t is a 16 bit-wide character type. System::Char are
16-bit wide characters as well. The two functions I referenced will map the
string you get back from PtrToStringChars() to ANSI.

I pointed you to DllImport. You should look it up. One the page where it is
described:

http://msdn.microsoft.com/library/de...mberstopic.asp

there is also mention of "CharSet" which addresses the ANSI/UNICODE issue.

If neither of these two approaches will solve your problem then I am afraid
I can't help you.

Regards,
Will
Nov 17 '05 #6
Yifan wrote:
Hi,

Does anybody know how to convert System::String* to char*? I searched
the System::String class members and did not find any. Thanks.


Try these two functions for converting a System::String * to a std::string
and back again:

std::string ToCppString(System::String * str)
{
if (str == 0)
{
return(std::string());
}
System::IntPtr
ptr(System::Runtime::InteropServices::Marshal::Str ingToHGlobalAnsi(str));
std::string ret(static_cast<const char *>(static_cast<void *>(ptr)));
System::Runtime::InteropServices::Marshal::FreeCoT askMem(ptr);
return(ret);
}

System::String * ToNetString(const std::string & ss)
{
if (ss.empty())
{
return(new System::String(S""));
}
System::IntPtr ptr(static_cast<System::IntPtr>(static_cast<void
*>(const_cast<char *>(ss.c_str()))));
System::String *
ret(System::Runtime::InteropServices::Marshal::Ptr ToStringAnsi(ptr));
return(ret);
}

I put these in a __nogc class in a namespace in a shared assembly and both
are static functions. I then export the class when creating the assembly and
import the class when using the assembly, using a macro which becomes either
__declspec(dllexport) when the assembly is being built and
__declspec(dllimport) otherwise. Since it is a __nogc class, you need to
#include the header file in which the static functions and their __nogc
class are defined. Then to convert from a System::String * to a std::string
or vice-versa, I use the full name, such as:
MyNamespace::MyClass::ToCppString(x) or
MyNamespace::MyClass::ToNetString(y)..
Nov 17 '05 #7

"Yifan" <an*******@discussions.microsoft.com> wrote in message
news:EA**********************************@microsof t.com...
Hi,

Does anybody know how to convert System::String* to char*? I searched the System::String class members and did not find any. Thanks.
Yifan


Personally I use good old CString :

System::String* stest="test";

CString cstest=stest;

char* ctest=cstest.GetBuffer();

HTH,

Michiel.
Nov 17 '05 #8
> Personally I use good old CString :

System::String* stest="test";

CString cstest=stest;

char* ctest=cstest.GetBuffer();


Where is this code located in? In a managed C++ project or an unmanaged
project? Which project wizard did you use and which compile settings did you
add to compile this?

Thanks and regards,
Klaus
Nov 17 '05 #9

"Klaus Bonadt" <Bo****@hotmail.com> wrote in message
news:O8**************@TK2MSFTNGP09.phx.gbl...
Personally I use good old CString :

System::String* stest="test";

CString cstest=stest;

char* ctest=cstest.GetBuffer();

Where is this code located in? In a managed C++ project or an unmanaged
project? Which project wizard did you use and which compile settings did

you add to compile this?

Thanks and regards,
Klaus


It's a mixed project (custom ActiveX control, no project wizard was used (VS
2003)) and I added
#include <atlstr.h> to the includes and also a reference to the .Net System
library.
Nov 17 '05 #10
> > > Personally I use good old CString :

System::String* stest="test";

CString cstest=stest;

char* ctest=cstest.GetBuffer();

Where is this code located in? In a managed C++ project or an unmanaged
project? Which project wizard did you use and which compile settings did

you
add to compile this?

Thanks and regards,
Klaus


It's a mixed project (custom ActiveX control, no project wizard was used

(VS 2003)) and I added
#include <atlstr.h> to the includes and also a reference to the .Net System library.


Is there somebody who can direct me in the right direction? I am using VS
2002 and I have difficulties in using MFC (for example CString) together
with managed code.
If I start with a managed C++ dll, I do not know how to integrate the MFC?
Or should I start with an unmanaged C++ dll? What options I have to give to
access .Net Framework?

Thanks and regards,
Klaus
Nov 17 '05 #11

"Klaus Bonadt" <Bo****@hotmail.com> wrote in message
news:%2****************@TK2MSFTNGP11.phx.gbl...
> Personally I use good old CString :
>
> System::String* stest="test";
>
> CString cstest=stest;
>
> char* ctest=cstest.GetBuffer();
>

Where is this code located in? In a managed C++ project or an unmanaged project? Which project wizard did you use and which compile settings
did you
add to compile this?

Thanks and regards,
Klaus

It's a mixed project (custom ActiveX control, no project wizard was used

(VS
2003)) and I added
#include <atlstr.h> to the includes and also a reference to the .Net

System
library.


Is there somebody who can direct me in the right direction? I am using VS
2002 and I have difficulties in using MFC (for example CString) together
with managed code.
If I start with a managed C++ dll, I do not know how to integrate the MFC?
Or should I start with an unmanaged C++ dll? What options I have to give

to access .Net Framework?

Thanks and regards,
Klaus


Please note that the CString I use is not the MFC one, but the ATL one.
I just tested it by creating a new Windows Forms .Net application, including
the mentioned file and creating and outputting a CString. Works fine. I
figured I'd have to include ATL as a static link, but this wasn't even
necessary.

Hope this helps,

Michiel.
Nov 17 '05 #12
On Mon, 9 Feb 2004 09:16:05 -0800, Yifan wrote:
Hi,

Does anybody know how to convert System::String* to char*? I searched the System::String class members and did not find any. Thanks.

Yifan


Have a look at the methods in the Marshal class. StringToHGlobalAnsi
may do what you need.

HTH,
Tim
--
Tim Smelser - MVP Visual C#
To email me, make the snot hot.
Nov 17 '05 #13
Hi,

I have found this in the msdn

String __gc* str = S"managed string";
const char __nogc* pStr = static_cast<const
char*>(Marshal::StringToHGlobalAnsi(str).ToPointer ());

Default Arguments and Helper Functions
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1033/vcmxspec/html/vcmg_defaultarg
umenthelpfunctions.htm

Hope this can help

Thanks,
Mohamed

"Yifan" <an*******@discussions.microsoft.com> wrote in message
news:EA**********************************@microsof t.com...
Hi,

Does anybody know how to convert System::String* to char*? I searched the System::String class members and did not find any. Thanks.
Yifan

Nov 17 '05 #14
Michie

yu da man

----- Michiel wrote: ----
"Klaus Bonadt" <Bo****@hotmail.com> wrote in messag
news:%2****************@TK2MSFTNGP11.phx.gbl..
Personally I use good old CString
>>>> System::String* stest="test"
>>>> CString cstest=stest
>>>> char* ctest=cstest.GetBuffer()
>>>>>> Where is this code located in? In a managed C++ project or a unmanage project? Which project wizard did you use and which compile setting
di yo
add to compile this
>> Thanks and regards
Klau
>>> It's a mixed project (custom ActiveX control, no project wizard was use
(V
2003)) and I adde
#include <atlstr.h> to the includes and also a reference to the .Ne

Syste
library
Is there somebody who can direct me in the right direction? I am using V

2002 and I have difficulties in using MFC (for example CString) togethe
with managed code
If I start with a managed C++ dll, I do not know how to integrate the MFC
Or should I start with an unmanaged C++ dll? What options I have to giv

t access .Net Framework
Thanks and regards

Klau

Please note that the CString I use is not the MFC one, but the ATL one
I just tested it by creating a new Windows Forms .Net application, includin
the mentioned file and creating and outputting a CString. Works fine.
figured I'd have to include ATL as a static link, but this wasn't eve
necessary

Hope this helps

Michiel.
Nov 17 '05 #15
Thank you :O

"Alfonso Paredes" <an*******@discussions.microsoft.com> wrote in message
news:1F**********************************@microsof t.com...
Michiel

yu da man!
----- Michiel wrote: -----
"Klaus Bonadt" <Bo****@hotmail.com> wrote in message
news:%2****************@TK2MSFTNGP11.phx.gbl...
>>>> Personally I use good old CString :
>>>>>>>> System::String* stest="test";
>>>>>>>> CString cstest=stest;
>>>>>>>> char* ctest=cstest.GetBuffer();
>>>>>>>>>> Where is this code located in? In a managed C++ project or
an
unmanaged >>> project? Which project wizard did you use and which compile
settings
did >> you
>>> add to compile this?
>>>>>> Thanks and regards,
>>> Klaus
>>>>>>> It's a mixed project (custom ActiveX control, no project
wizard was used > (VS
>> 2003)) and I added
>> #include <atlstr.h> to the includes and also a reference to the
..Net > System
>> library.
>>>> Is there somebody who can direct me in the right direction? I am
using VS > 2002 and I have difficulties in using MFC (for example CString) together > with managed code.
> If I start with a managed C++ dll, I do not know how to integrate the MFC? > Or should I start with an unmanaged C++ dll? What options I have to
give to
> access .Net Framework?
>> Thanks and regards, > Klaus
>


Please note that the CString I use is not the MFC one, but the ATL

one. I just tested it by creating a new Windows Forms .Net application, including the mentioned file and creating and outputting a CString. Works fine. I figured I'd have to include ATL as a static link, but this wasn't even necessary.

Hope this helps,

Michiel.

Nov 17 '05 #16

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

27
by: Trep | last post by:
Hi there! I've been having a lot of difficult trying to figure out a way to convert a terminated char array to a system::string for use in Visual C++ .NET 2003. This is necessary because I...
2
by: Alper Akcayoz | last post by:
Hello Esteemed Developpers I would like to thank you in advance for your sincere responses I am a fresh Visual C++ .NET Developer. Can you kindly guide me for How to Convert char* to System::String
8
by: ppcdev | last post by:
Here's what I try : LPCTSTR tst = (LPCTSTR) (LPCWSTR) Marshal::StringToHGlobalUni(str); c:\MyNetPrj\Prj0001\stunt.cpp(244): error C2440: 'type cast' : cannot convert from 'System::IntPtr' to...
3
by: Maileen | last post by:
Hi, How can we convert string^ to String or to LPCWSTR ? thx, Maileen
7
by: nicolas.hilaire | last post by:
hi all, i'm using this code to convert a String ^ in char * String ^str = "string .net"; IntPtr p = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str); LPCSTR str2 =...
0
by: Madhu_TN | last post by:
Hi All, I am new to this board. I am trying to create a Crystal Report viewer into a VS C++ Dot NET 2003 app ( This uses both managed and unmanaged code). I get the following compilation error:...
3
by: simon | last post by:
I am a fresh Visual C++ .NET Developer. Can you kindly guide me for How to Convert char to System::String I am using windows forms and trying to set a text value referencing the method...
1
by: AJ32 | last post by:
Hi, I am writting a program in visual c++ expres that takes user input and sends it to files, I am using a text box to get the input. The problem is, that I cannot use a "system string" when...
12
by: Peter | last post by:
Trying to convert string to byte array. the following code returns byte array of {107, 62, 194, 139, 64} how can I convert this string to a byte array of {107, 62, 139, 65} ...
0
by: VivesProcSPL | last post by:
Obviously, one of the original purposes of SQL is to make data query processing easy. The language uses many English-like terms and syntax in an effort to make it easy to learn, particularly for...
0
by: jianzs | last post by:
Introduction Cloud-native applications are conventionally identified as those designed and nurtured on cloud infrastructure. Such applications, rooted in cloud technologies, skillfully benefit from...
0
by: abbasky | last post by:
### Vandf component communication method one: data sharing ​ Vandf components can achieve data exchange through data sharing, state sharing, events, and other methods. Vandf's data exchange method...
2
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 7 Feb 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:30 (7.30PM). In this month's session, the creator of the excellent VBE...
0
by: stefan129 | last post by:
Hey forum members, I'm exploring options for SSL certificates for multiple domains. Has anyone had experience with multi-domain SSL certificates? Any recommendations on reliable providers or specific...
0
Git
by: egorbl4 | last post by:
Скачал я git, хотел начать настройку, а там вылезло вот это Что это? Что мне с этим делать? ...
1
by: davi5007 | last post by:
Hi, Basically, I am trying to automate a field named TraceabilityNo into a web page from an access form. I've got the serial held in the variable strSearchString. How can I get this into the...
0
by: Aftab Ahmad | last post by:
Hello Experts! I have written a code in MS Access for a cmd called "WhatsApp Message" to open WhatsApp using that very code but the problem is that it gives a popup message everytime I clicked on...
0
by: Aftab Ahmad | last post by:
So, I have written a code for a cmd called "Send WhatsApp Message" to open and send WhatsApp messaage. The code is given below. Dim IE As Object Set IE =...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.