473,769 Members | 3,893 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 10833
"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
51732
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
8184
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
12164
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
3348
by: Maileen | last post by:
Hi, How can we convert string^ to String or to LPCWSTR ? thx, Maileen
7
3250
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
3703
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
5356
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
2786
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
13553
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
9589
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
9423
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10211
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...
1
9994
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 Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9863
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
8870
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
5447
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
3958
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 we have to send another system
3
2815
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.