Toon posts:

[MS vc++ .NET] String to string __gc *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben sinds (heel) kort bezig in Microsoft Visual Studio .NET, en wil een applicatie ontwikkelen met VC++. Ik heb al wel wat kennis van C++.

Ik zit nou met het probleem dat ik een string heb uitgelezen vanuit een bestand, en ik wil deze met een druk op een knopje in een textBox laten verschijnen. Opzich is dat niet zo moeilijk, want als je de string al hebt dan hoev je alleen maar onderstaande code onder het event 'Click' van de bewuste code te zetten.

code:
1
textBox1->Text = str1;


str1 is de gevulde string,

Als ik dit compileer, dan krijg ik de error:

c:\C++test\file_open\Form1.h(95) : error C2664: 'void System::Windows::Forms::TextBox::set_Text(System::String __gc *)' : cannot convert parameter 1 from 'std::string' to 'System::String __gc *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

ps : als iemand een tutorial oid heeft om te leren werken met ms vc++, dan hoor ik dat ook graag, want ik kan niets fatsoenlijks vinden

[ Voor 5% gewijzigd door Verwijderd op 16-03-2004 12:15 ]


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Het verwacht een pointer naar een (garbage collected/.net) string en niet een (standaard c++) string object. In de help-files van VS.NET staat wel hoe je met strings om moet gaan.

Maar als ik hieruit op kan maken dat je C++ ook nog eigenlijk moet leren waarom stap je dan niet direct over op C#, ik denk persoonlijk dat je daar meer plezier aan gaat beleven.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Ik denk ook dat je met C# wat meer plezier zult beleven.

Van welk type is str ?

https://fgheysels.github.io/


Verwijderd

Topicstarter
omdat ik een boek heb van C++(Aan de slag met C++ van Academic service), en VC++ zou gewoon c++ zijn, maar dan met de tools om buttons ed. neer te zetten.
en ik weet niets van C#, en daar heb ik ook geen info van.

vandaar dat ik het eigelijk met vc++ wou doen

str1 is van het type string
zoals in bijv:
code:
1
string str1 = "abcdefghij";



waarom zou ik meer hebben aan C# dan aan VC++??
en wie heeft een goeie tutorial voor me dan om C# te programmeren onder MS Visual Studio .NET ???

[ Voor 40% gewijzigd door Verwijderd op 16-03-2004 13:26 ]


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 16 maart 2004 @ 12:28:
omdat ik een boek heb van C++(Aan de slag met C++ van Academic service), en VC++ zou gewoon c++ zijn, maar dan met de tools om buttons ed. neer te zetten.
Maar nu gebruik je echter C++.net (Managed C++), en dat staat niet in dat boek
waarom zou ik meer hebben aan C# dan aan VC++??
Je hebt meer aan C# dan aan Managed C++ omdat C# gemaakt is voor .net. En managed C++ uit vs.net 2003 is eigenlijk een beetje een zooitje, dan kun je beter wachten tot vs.net 2005
en wie heeft een goeie tutorial voor me dan om C# te programmeren onder MS Visual Studio .NET ???
google kent er wel een paar vermoed ik :Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
maar kan ik niet zonder die .net werken dan?

en als ik wel wil werken met MS VC++ .NET (omdat d'r geen andere fatsoenlijke oplossing is maybe) hoe krijg ik een string (welk type er gebruikt wordt intereseert me niet) in een textbox ???

[ Voor 69% gewijzigd door Verwijderd op 16-03-2004 15:28 ]


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Natuurlijk kun je zonder .net werken, maar dat betekent ook zonder winforms (aangezien dat .net is), en dus ook zonder je textbox

Je kunt overigens ook gewoon native win32 applicaties maken, of met MFC werken, maar dan is winforms denk ik wel wat handiger.

Verder kun je volgens mij wel gewoon een System::String maken door je std::string te converteren naar een const char * (met string::c_str ()), en daar een nieuwe System::String van te maken (met new System::String ())

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
.oisyn:
Ik geloof dat hij dan ook best de Convert.ToString() kan gebruiken. ( in VC++.NET zal dat dus Convert::ToString() zijn geloof ik).

https://fgheysels.github.io/


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Verwijderd schreef op 16 maart 2004 @ 12:28:
waarom zou ik meer hebben aan C# dan aan VC++??
en wie heeft een goeie tutorial voor me dan om C# te programmeren onder MS Visual Studio .NET ???
Het lijkt me, op z'n zachts gezegd, heel raar om met C++.net als taal te beginnen.
Dit komt omdat het een mengeling is van standaard C++ met taaleigenschappen van het .NET platform van microsoft. Je bent dus eigenlijk continu met twee verschilende platformen bezig waardoor de taal al snel een zooitje wordt en je geen idee hebt waar je mee bezig bent (waarom moet ik dan wel pointers gebruiken en dan weer niet, waarom wordt dit object wel automatisch opgeruimt en die niet, waarom zijn er twee string classes, etc).

Daarom kan je beter nu kiezen, of voor C++ gaan en dan gewoon bij de basis beginnen (dus zonder .NET) of voor een echte .NET taal gaan zoals C#.

  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

whoami schreef op 16 maart 2004 @ 15:44:
.oisyn:
Ik geloof dat hij dan ook best de Convert.ToString() kan gebruiken. ( in VC++.NET zal dat dus Convert::ToString() zijn geloof ik).
accepteert die ook const char *'s dan?
.edit: nee dus :)

[ Voor 4% gewijzigd door .oisyn op 16-03-2004 16:10 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Nouja, ik heb het ook niet nagekeken.

str1 heeft dan ook geen ToString() member ?

https://fgheysels.github.io/


  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 26-05 01:17
Als je c++ wilt programmeren kun je daar mijns inziens het beste ms vc++ 6 voor gebruiken (als je de keuze tot de ms producten beperkt).

Verwijderd

Topicstarter
het probleem is dat ik het op m'n stage moet doen en ze ooit zo stom zijn geweest om het eerder door mij genoemde pakket aan te schaffen.
Verder zijn er geen licenties voor andere pakketten en ze zijn ook niet van plan om Borland C++Builder of vc++ 6 aan te schaffen.

van C# weet ik NIETS (ookal heb ik vandaag bijna de hele dag erna gezocht) :S
en met het C++.net komt ook niemand verder zoals je ziet...

  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

whoami schreef op 16 maart 2004 @ 16:16:
Nouja, ik heb het ook niet nagekeken.

str1 heeft dan ook geen ToString() member ?
het is een std::string, van C++, wat moet die in hemelsnaam met een ToString () member, wat .net is :?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
het hoeft van mij geen std::string te zijn...
dat is het nou, maar als dat problemen levert die eoa ander type kan oplossen mag da natuurlijk ook.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Verwijderd schreef op 16 maart 2004 @ 16:39:
van C# weet ik NIETS (ookal heb ik vandaag bijna de hele dag erna gezocht) :S
en met het C++.net komt ook niemand verder zoals je ziet...
Koop er een boek van ?

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Verwijderd schreef op 16 maart 2004 @ 16:45:
het hoeft van mij geen std::string te zijn...
dat is het nou, maar als dat problemen levert die eoa ander type kan oplossen mag da natuurlijk ook.
Hoe en waar declareer je die str1? Waarom gebruik je dan geen System::String ?
.oisyn schreef op 16 maart 2004 @ 16:42:
[...]

het is een std::string, van C++, wat moet die in hemelsnaam met een ToString () member, wat .net is :?
In .NET wordt alles gemapped naar een 'object'. (Ook een int, etc.... worden gemapped (geboxed) naar een Int32 bv, die inherit van Object). ToString() is er een member van.

[ Voor 38% gewijzigd door whoami op 16-03-2004 16:48 ]

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Sjaaky schreef op 16 maart 2004 @ 16:34:
Als je c++ wilt programmeren kun je daar mijns inziens het beste ms vc++ 6 voor gebruiken (als je de keuze tot de ms producten beperkt).
Als je per se een MS product wilt gebruiken pak dan MS VC++.net 2003, VC6 is echt te brak wat standard conformance betreft (en ja, met VC++.net kun je niet alleen .net applicaties maken, maar ook gewoon native c++ applicaties)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
@whoami
De string is gedeclareerd (zoals al eerder omschreven)
code:
1
string str1 = "abcdefghij";


ik wil best een System::String gebruiken, maar hoe doe ik dat???

@iedereen, ik heb geen keus...
ik zit vast aan MS Visual Studio.NET, of dat ik nou wil of niet

  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 16 maart 2004 @ 16:52:
@whoami
De string is gedeclareerd (zoals al eerder omschreven)
code:
1
string str1 = "abcdefghij";


ik wil best een System::String gebruiken, maar hoe doe ik dat???
een S voor je string literals zetten.
Maar zoals ik al zei, je kunt toch gewoon een String maken van een std::string?

C++:
1
textBox->Text = new System::String (str1.c_str ());
@iedereen, ik heb geen keus...
ik zit vast aan MS Visual Studio.NET, of dat ik nou wil of niet
Dat was al duidelijk, maar dat betekent natuurlijk nog niet dat wij daar niet verder over mogen discussieren

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
De .NET String ctor accepteert gewoon een char*, dus std::string::c_str zou gewoon moeten werken.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Heb je trouwens al eens naar C# gekeken? 't Is wat straightforwarder dan C++.NET.

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

whoami schreef op 16 maart 2004 @ 16:47:
In .NET wordt alles gemapped naar een 'object'. (Ook een int, etc.... worden gemapped (geboxed) naar een Int32 bv, die inherit van Object). ToString() is er een member van.
std::string is een native class, en geen .net class, en is dus ook geen Object. En al zou het gemapped worden naar Object dan heeft het nog altijd geen zinnige ToString implementatie

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
@ .oisyn
Ik zal eens gaan kijken of dat het werkt, maar dat kan wel ffkes duren voordat ik achter de pc zit waar het op geinstalleerd is (ben nou ff ergens anders).
Natuurlijk mag je door discussieren, ik zal de laatste zijn die het tegenhoud, maar het zou wel jammer zijn alszo'n discussie het antwoord in de weg staat.
gelukkig is dat nou niet :D

@whoami
Ik heb gezocht naar C#, maar heb er teweinig info over kunnen vinden om het fatsoenlijk een beteje te snappen. Weinig voorbeelden die simpele Windows-GUI-proggies, en tutorials waar GUI-proggies worden uitgelegd.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Mjah, er zijn nochtans genoeg resources hoor, op de MSDN, c-sharpcorner, etc..... Er zijn ook voldoende boeken over C# beschikbaar.

Als je C# ook geinstalleerd hebt, kan je er eens mee spelen.

https://fgheysels.github.io/


Verwijderd

Topicstarter
ik zal C# er eens bij zetten, hopelijk hoev ik dan nie alles opnieuw te installeren, we zien wel...

ok, thnx het werkt nou :D
maar wat ik nou dus doe is een std::string maken, en deze omzetten naar een system::string, en die zet ik in het textveld.
toch?

hoe maak ik een string die ik meteen in het textveld kan krijgen??

[ Voor 55% gewijzigd door Verwijderd op 18-03-2004 12:52 ]

Pagina: 1