473,508 Members | 2,241 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

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 10796
"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
51646
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
8156
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
12129
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
3318
by: Maileen | last post by:
Hi, How can we convert string^ to String or to LPCWSTR ? thx, Maileen
7
3233
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
3670
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
5344
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
2772
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
13508
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
7326
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
7383
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
1
7046
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
5627
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
1
5053
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
3194
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
3182
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
1557
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
0
418
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

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.