[C++] string to label

0

Witam
Mam pytanko, mianowicie jak umieścić ciąg znaków typu string w label ? taki kod niestety nie dziala

 
 template <class T> std::string ToString(const T& t) 
					{ 
						 std::ostringstream oss; 
						  oss << t; 
						return oss.str(); 
					} 
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				 
				int licznik1 = toInt(textBox1->Text);
				int licznik2 = toInt(textBox1->Text);
				int mianownik1 = toInt(textBox1->Text);
				int mianownik2 = toInt(textBox1->Text);
				
				CRationalNum* klasa = new CRationalNum(5,6);
				double a = klasa->ulamek_dziesietny();
		
				String mojtekst = ToString<double>(a);
				this->label6->Text =  mojtekst;
0

Po kiego grzyba robisz konwersję do std::string?
Skoro masz .net-a to używaj jego metod do konwersji. Dokumentacja .net naprawdę nie gryzie.

0

skorzystałem z Konwersje int na string i string na int ,

 ostringstream ss;
ss << a;
string str = ss.str();

i także występuje błąd
System::Windows::Forms::Control::Text::set(System::String ^)' : cannot convert parameter 1 from 'std::string' to 'System::String ^"

1
double a=Double::Parse("123.456");
label6->Text = a.ToString();

Jak szukasz coś w sieci to szukaj nie C++ tylko C++/CLI

0

ok wielkie dzięki :) już mi się miesza wszystko z C# i Java i zwyklego C. a niestety intellisense mi nie działa :/ Od razu się spytam by nie zakładać nowego tematu. Czemu dla danych:
licznik1 = 1;
licznik2 = 1;
mianownik1 = 2;
mianownik2 = 3;
wynik to 6/9 ? xd Nie mogę znaleźć błedu mógłby ktoś zerknąć ?
z klasy CRationalNum :

public:
		 CRationalNum(){
			numerator = 0;
			denominator = 1;
		}

		 CRationalNum(int licznik, int mianownik){
			numerator = licznik ; 
			if (mianownik == 0 ) mianownik = 1; 
			denominator = mianownik;
		}

		CRationalNum(const CRationalNum &ulamek){
			numerator = ulamek.numerator;
			denominator = ulamek.denominator;
		}

int getNumerator(){
			return this->numerator;
		}

		int getDenominator(){
			return this->denominator;
		}

		CRationalNum operator+(const CRationalNum &a){
			
			return CRationalNum( this->numerator*a.denominator + a.numerator*denominator, this->denominator * a.denominator );
		} 

Z Form :

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				 
				int licznik1 = int::Parse(textBox1->Text);
				int licznik2 = int::Parse(textBox4->Text);
				int mianownik1 = int::Parse(textBox2->Text);
				int mianownik2 = int::Parse(textBox3->Text);
				
				CRationalNum* klasa = new CRationalNum(0,1);
				CRationalNum* klasa2 = new CRationalNum(licznik1,mianownik2);
				CRationalNum* klasa3 = new CRationalNum(licznik2,mianownik2);
				float a = klasa->ulamek_dziesietny();
				
				*klasa = *klasa2 + *klasa3; 
				
			
				
					int tmp = klasa->getNumerator();
					int tmp2 = klasa->getDenominator();
				MessageBox::Show( tmp.ToString());
				MessageBox::Show( tmp2.ToString()); 
1

cannot convert parameter 1 from 'std::string' to 'System::String ^"

#include <msclr/marshal_cppstd.h>
using namespace msclr::interop;

...
System::String ^s1 = L"Ala ma kota";
std::string s2 = marshal_as<std::string>(s1);
System::String ^s3 = marshal_as<System::String^>(s2);

ale lepiej używać wstring a nie string.

0

Zapomniałeś podać konstruktor.

0

gdy próbuje dołączyć biblioteke

#include <msclr/marshal_cppstd.h> 

wyskakuje mi masa błędów typu :

Error	4	error C2872: 'IServiceProvider' : ambiguous symbol
 
0

Najpierw wszystkie #include, dopiero potem jakiekolwiek using namespace.

0

no i tak jest, a mimo to wyskakuje błąd. Zatem czemu tak sie dzieje ?

 #include "TSearch.h"
#include "TModification.h"
#include <fstream> //import biblioteki fstream
#include <stdio.h> //import biblioteki stdio.h
#include "Stop.h"
#include <list>
#include <string>
#include <msclr/marshal_cppstd.h> 


namespace Mateusz {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;
	using namespace msclr::interop;
0

Musisz podać więcej kodu - a zwłaszcza tam gdzie masz błąd - i całą treść błędów.

I uporządkuj kolejność inkludów, zwłaszcza standardowe powinny być optycznie razem:

#include <fstream>
#include <cstdio>
#include <list>
#include <string>

Jeśli tego IServiceProvider sam używasz w kodzie, to powinno pomóc napisanie ::IServiceProvider albo System::IServiceProvider zależnie od tego czy to ma być klasa COM-owa czy z .NETa – bo właśnie zbieżność nazw jest tutaj problemem.

0

ale to wyskakuje już bo dołączeniu biblioteki. wystarczy że dołącze ją i wysypują mi się błędy mimo że jeszcze z niej nie skorzystalem

0
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <conio.h>
#include <windows.h>
using namespace std;
struct Pojazd
{
                       int masa;
                       int predkoscmax;
                       int iloscosob;
                       float pojemnosc;
                      char marka[20];
};
                      Pojazd sam;
                     vector <Pojazd> samochod;
                    int wyswietl(){
                     for (int j=0; (j<samochod.size()); j++)
{
                      cout<<samochod[j].masa<<" "<<samochod[j].predkoscmax<<"                       "<<samochod[j].iloscosob<<"
 "<<samochod[j].pojemnosc<<" "<<samochod[j].marka<<endl;
}
                    cout<<"\n";
                   return 0;
}
                   int main()
                   {int i;
                   i=0;
                   ifstream plik("plik.txt");
                    if (plik.isopen()) {
                   while (!plik.eof())
{
                   i++;
               plik>>sam.masa>>sam.predkoscmax>>sam.iloscosob>>sam.pojemnosc>>sam.marka;
samochod.pushback(sam);
}
              plik.close();
             wyswietl();
}
              system("pause");
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1