473,714 Members | 2,453 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 10828
"Yifan" <an*******@disc ussions.microso ft.com> wrote in message
news:EA******** *************** ***********@mic rosoft.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 PtrToStringChar s()

Regards,
Will
Nov 17 '05 #2
PtrToStringChar s() 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*******@disc ussions.microso ft.com> wrote in messag
news:EA******** *************** ***********@mic rosoft.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 PtrToStringChar s(

Regards
Wil

Nov 17 '05 #3
"Yifan" <an*******@disc ussions.microso ft.com> wrote in message
news:1D******** *************** ***********@mic rosoft.com...
PtrToStringChar s() returns System::Char*. But
I want to convert System::String* to char* which
is a c-type string such as "hello".


See Win32's WideCharacterTo MultiByte() 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*******@disc ussions.microso ft.com> wrote in messag
news:1D******** *************** ***********@mic rosoft.com..
PtrToStringChar s() returns System::Char*. Bu
I want to convert System::String* to char* whic
is a c-type string such as "hello"


See Win32's WideCharacterTo MultiByte() 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*******@disc ussions.microso ft.com> wrote in message
news:A4******** *************** ***********@mic rosoft.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 PtrToStringChar s() 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(Sys tem::String * str)
{
if (str == 0)
{
return(std::str ing());
}
System::IntPtr
ptr(System::Run time::InteropSe rvices::Marshal ::StringToHGlob alAnsi(str));
std::string ret(static_cast <const char *>(static_cast< void *>(ptr)));
System::Runtime ::InteropServic es::Marshal::Fr eeCoTaskMem(ptr );
return(ret);
}

System::String * ToNetString(con st std::string & ss)
{
if (ss.empty())
{
return(new System::String( S""));
}
System::IntPtr ptr(static_cast <System::IntPtr >(static_cast<v oid
*>(const_cast<c har *>(ss.c_str())) ));
System::String *
ret(System::Run time::InteropSe rvices::Marshal ::PtrToStringAn si(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(dlle xport) when the assembly is being built and
__declspec(dlli mport) 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::My Class::ToCppStr ing(x) or
MyNamespace::My Class::ToNetStr ing(y)..
Nov 17 '05 #7

"Yifan" <an*******@disc ussions.microso ft.com> wrote in message
news:EA******** *************** ***********@mic rosoft.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.Ge tBuffer();

HTH,

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

System::String* stest="test";

CString cstest=stest;

char* ctest=cstest.Ge tBuffer();


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******** ******@TK2MSFTN GP09.phx.gbl...
Personally I use good old CString :

System::String* stest="test";

CString cstest=stest;

char* ctest=cstest.Ge tBuffer();

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

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

Similar topics

27
51716
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 have some legcay C code that needs to process a string taken from a textbox, then I need to re-display the string as the textbox->Text. I easily found how to convert from system::string to char but I can't figure out how to go the other way!!
2
8183
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
12157
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 'LPCWSTR' I really get mad with that !!!
3
3344
by: Maileen | last post by:
Hi, How can we convert string^ to String or to LPCWSTR ? thx, Maileen
7
3247
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 = reinterpret_cast<LPCSTR>(static_cast<void *>(p)); System::Runtime::InteropServices::Marshal::FreeHGlobal(p);
0
3699
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: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\ cstringt.h(875): error C2664: 'PtrToStringChars' : cannot convert parameter 1 from 'unsigned char *' to 'const System::String __gc *' The code segemnt is:
3
5354
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 className() of an object of class HetConvert (my own) this returns a char - which as you can see from the code below I am trying to pass to label1->Text - but this expects a String^ any clues anyone
1
2783
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 writting to the file: string ^textboxinput = textBox1->Text; ofstream File; File.open("newfile", ios::app | ios::out); File << "contents" << textboxinput << endl; File.close(); An error occurs and says I can't use a system string when writting to...
12
13547
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} System.Text.UTF8Encoding str = new System.Text.UTF8Encoding(); string s = new string((char)107, 1); s += new string((char)62, 1);
0
8797
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9309
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, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
9171
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 tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
9010
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
7946
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, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
5945
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4462
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 last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
2
2514
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2107
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 can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

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.