Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > std::string to System::string


Автор: neic 4.7.2010, 23:27
Возникла такая ситуация что нужно из std::string перевести в System::string

Подскажите как это можно сделать.

Автор: ИванМ 4.7.2010, 23:31
Код

#include <string>
#include <iostream>

namespace System
{
    typedef std::string string;
}

int main()
{
    System::string str="123";
    std::cout<<str<<std::endl;
    system("pause");
}


Автор: neic 4.7.2010, 23:39
ИванМ
Не получилось.

Я правильно сделал(?):
Код

...
namespace System
{
    typedef std::string string;
}
...
namespace GUI2 {
...
System::String name;
std::string name1;
name1 = (const char*) mas[0][0]; //из char в std:string
name = name1;

Автор: ИванМ 4.7.2010, 23:44
Цитата(neic @  4.7.2010,  23:39 Найти цитируемый пост)
System::String name;

в C/C++ регистр имеет значение. Правильно:
Код

System::string name;

Автор: neic 4.7.2010, 23:58
Решил не много по другому:
Код

...
static System::String^ StdToSys(std::string StdStr){
    return gcnew System::String(StdStr.c_str());
}
...
std::string str;
str = (const char*) mas[0][0];
System::String ^name =StdToSys(str);

Автор: ИванМ 5.7.2010, 00:02
neic, Managed C++ оказывается. Не понял сразу вопрос. А почему нельзя сказу перевести из char* в String^. Зачем вообще нужен std::string?

Автор: neic 5.7.2010, 00:14
ИванМ
Я думал, что напрямую нельзя. Не так давно изучаю язык, уже запутался с конвертированием.

Автор: ИванМ 5.7.2010, 00:20
Код

char s[]="123";
System::String ^name=gcnew System::String(s);


Добавлено через 3 минуты и 52 секунды
На самом деле, когда пишут под .NET, стараются пользоваться по возможности только им. .NET довольно мощная библиотека, и в ней почти все есть. Остальными библиотеками, включая STL, пользуются только по необходимости.

Автор: mrbrooks 5.7.2010, 08:00
сами мягкотелые предлагают сию операцию делать так:

Код

#include <msclr\marshal.h>

using namespace System;
using namespace msclr::interop;

//...
   const char* str = "Hello CLR!";
   String^ Str = marshal_as<String^>(str);
//...


Автор: neic 5.7.2010, 10:12
Всем спасибо.
Думаю стоит сделать FAQ по конвертированию типов данных.

Автор: bsa 5.7.2010, 15:27
Цитата(neic @  5.7.2010,  11:12 Найти цитируемый пост)
Думаю стоит сделать FAQ по конвертированию типов данных. 
Думаю, стоит задавать вопросы в подходящих разделах. Данный раздел отношения к C# и C++/CLI НЕ ИМЕЕТ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)