String*Str = "something";
int L = Str->Length-1;
char* NStr = new char [L+1];
for(int i = 0; i <= L; ++i){
*(NStr+i) = (char) Str->get_Chars(i);
}
*(NStr+L+1)='\0';
but could not convert "char*" to "String*"
there is nothing (as much as i know) like:
Str->set_Chars(i, *(CHAR+i) );
can anyone help ?!?!
note: im using C++ .NET
[edited by - zaidgs on April 14, 2004 2:55:30 PM]
help: convert "char*" to "String*"
i already done a search,
but found nothing to my needs.
i need to convert from the
garbage collected "String" to "char*",
and vice versa.
i managed to make a "String*" to "char*",
like this:
If you are using the STL template string class, then it provides a function for the string to return a char*.
string.c_str() //I think, just open up and look through it
string.c_str() //I think, just open up and look through it
Also, I cannot quite figure out why you do int L = string->Length() - 1 but then add it back on teh very next line.
The STL string class does not include a terminating character so your second line is correct. The first, however, is incorrect.
You can do:
char* str = new char[std::string->length() + 1];
str = std::string->c_str();
Conversely, converting from char* to string* is very easy. Just assign the char* to the new string. The std::string class takes care of the details.
- Jason
The STL string class does not include a terminating character so your second line is correct. The first, however, is incorrect.
You can do:
char* str = new char[std::string->length() + 1];
str = std::string->c_str();
Conversely, converting from char* to string* is very easy. Just assign the char* to the new string. The std::string class takes care of the details.
- Jason
there is no .c_str() , function !!
i am using:
public __gc __sealed class String : public IComparable,
ICloneable, IConvertible, IEnumerable
if that would help.
in my search i found many talking about
std::string, but thats not what i want.
i want my the string that is garbage collected,
so that i can wrap my c++ class, to be used
with other .NET languages.
[edited by - zaidgs on April 14, 2004 2:54:00 PM]
i am using:
public __gc __sealed class String : public IComparable,
ICloneable, IConvertible, IEnumerable
if that would help.
in my search i found many talking about
std::string, but thats not what i want.
i want my the string that is garbage collected,
so that i can wrap my c++ class, to be used
with other .NET languages.
[edited by - zaidgs on April 14, 2004 2:54:00 PM]
my code is NOT WRONG, its CORRECT.
maybe it just didnt make sense to add one, then subtract one,
but thats why got to my mind when i wrote the function. :D
[edited by - zaidgs on April 14, 2004 3:06:46 PM]
I''m not really sure what the big problem is. This compiles just fine for me:
char * some_string = "Moo ha ha"; System::String * str = new System::String(some_string);
at first i thought i could use:
char * some_string = "hiiiiii";
String * str;
str = some_string;
but that caused some error.
using your technique gives the same error:
char * some_string = "hiiiiii"
String * str = new String(some_string);
the error is:
i have this VB.NET code:
'--------------------------------------
Label3.Text = x.NewGeneration(TextBox2.Text)
'at this point label3.text = "200000"
'(the value returned by NewGeneration function)
TextBox1.Text = x.GetBestString
'a char* should be converted to String here
'at this point label3.text = "100" !!!!
'(some value, dont know from where it come)
'---------------------------------------
my code obviously uses incorrect memory addresses,
yours (less obviously) has some bug (maybe mine, but
the call is so simple there is no place for errors).
the call is:
String* GetBestString(){
String* NStr = new String( G->GetBestString() );
return NStr;
}
[edited by - zaidgs on April 14, 2004 3:36:26 PM]
char * some_string = "hiiiiii";
String * str;
str = some_string;
but that caused some error.
using your technique gives the same error:
char * some_string = "hiiiiii"
String * str = new String(some_string);
the error is:
i have this VB.NET code:
'--------------------------------------
Label3.Text = x.NewGeneration(TextBox2.Text)
'at this point label3.text = "200000"
'(the value returned by NewGeneration function)
TextBox1.Text = x.GetBestString
'a char* should be converted to String here
'at this point label3.text = "100" !!!!
'(some value, dont know from where it come)
'---------------------------------------
my code obviously uses incorrect memory addresses,
yours (less obviously) has some bug (maybe mine, but
the call is so simple there is no place for errors).
the call is:
String* GetBestString(){
String* NStr = new String( G->GetBestString() );
return NStr;
}
[edited by - zaidgs on April 14, 2004 3:36:26 PM]
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement