Он предоставляет инструмент для простого переноса приложений с языков высокого уровня, таких как .NET, на родные языки, такие как C ++. Это исследовательский проект, и он находится в стадии разработки в сотрудничестве с UPC - BarcelonaTech и AlterAid S.L.

ли кто-нибудь помочь мне конвертировать C # в C ++? вот пример:

using System;
using System.Net;
using System.Text;
using System.IO;
using System.Threading;
namespace read_website
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                DownloadString("http://www.xxx.asp");
                Thread.Sleep(100);//update every 100 millisecoand 
            }
        }

        public static void DownloadString(string address)
        {           
            WebClient client = new WebClient();
            string website = client.DownloadString(address);
            get_Current_X1_value(website);
        }

        static void get_Current_X1_value(string web)
        {
            int x = web.IndexOf("Current X1 value:");
            string part1 = web.Substring(x, 100);
            string[] array = part1.Split('>', '<');
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i].Contains("Current X1 value:"))
                    Console.Write(array[i]);
                if (array[i].Contains("W"))
                    Console.WriteLine(array[i]);
            }

        }
    }
}

На самом деле, поскольку сложно смешивать C # и C ++ в Unix, я пытаюсь конвертировать C # в C ++, поэтому любая помощь будет очень цениться

Заранее благодарю за ответ, помощь и время,

 FrustratedWithFormsDesigner10 янв. 2011 г., 21:41
Не могли бы вы составить более конкретный список проблем, с которыми вы столкнулись?
 Frédéric Hamidi10 янв. 2011 г., 21:38
Перевод с одного языка на другой никогда не бывает легким из-за используемых стандартных библиотек. Например, я мог бы перевести ваш код, если вы предоставите мне реализацию C ++System.Net.WebClient, Или ты имел ввиду C ++ / CLI?
 Frédéric Hamidi10 янв. 2011 г., 21:49
@make, вы также можете изменить этот код перед его переводом. Удар по веб-серверу 10 раз в секунду, вероятно, не очень хорошая идея.
 Zac Howland10 янв. 2011 г., 21:52
C ++ / CLI в настоящее время не поддерживается через Mono (расширения синтаксиса пока не реализованы). Если вам нужно, чтобы он работал в UNIX, просто скомпилируйте код C # с помощью Mono. Если вам нужна реализация только для UNIX, PERL - это путь, который избавит вас от многих головных болей.
 Ben Voigt10 янв. 2011 г., 21:40
Если вам нужно перенести это в unix, я бы предложил bash + wget + perl, а не C ++.

Ответы на вопрос(10)

чтобы он работал на машинах Unix.

Это происходит главным образом из-за того, что .NET Framework недоступен (из C ++) на машинах Unix. Mono позволит вам запускать многие программы на C # / .NET, но не поддерживает C ++ / CLI (расширения C ++, которые позволяют напрямую работать с .NET Framework).

Конвертация языка возможна - хотя и трудна из-за различий в подходах (например, сборка мусора в C #), но вызовы фреймворка потребуют портирования в разные библиотеки, и это часто не является хорошим кандидатом для прямого перевода.

Например, в приведенном выше коде вам нужно будет выбрать библиотеку C ++ для веб-доступа - и как только вы сделаете этот выбор, он будет диктовать код, необходимый для вызова этой библиотеки для загрузки строки веб-сайта.

 Reed Copsey27 окт. 2016 г., 20:34
@ Alexander77 CoreRT этого не делает - это отдельная реализация, которая оборачивает нативный материал в COM-подобный API, который можно использовать из C # ...
 Alexander7727 окт. 2016 г., 11:04
Есть много проектов, которые могут это сделать. Третьи лица или от Microsoft (например, CoreRT)

перевод библиотек может быть проблемой, но один проект с открытым исходным кодом, который может помочь в некоторых случаях:

http://alexalbala.github.io/Alter-Native/

Цитата с его главной страницы:

Он предоставляет инструмент для простого переноса приложений с языков высокого уровня, таких как .NET, на родные языки, такие как C ++. Это исследовательский проект, и он находится в стадии разработки в сотрудничестве с UPC - BarcelonaTech и AlterAid S.L.

https://github.com/ASDAlexander77/cs2cpp

Вам просто нужно выполнить некоторые шаги для генерации и компиляции кода C ++ из C #. Кроме того, это приложение конвертирует код C # в C ++, который является кросс-платформенным.

который конвертируется в C, а затем в исполняемый файл. Есть очень мало различий с C #. Вам все равно придется использовать свой мозг, хотя.

Решение Вопроса

как сложно смешивать C # и C ++ в Unix, я пытаюсь конвертировать C # в C ++

Вы рассматривалиМоно? Это то, что определенно стоит проверить, прежде чем начать изучать C ++, чтобы конвертировать и запускать существующее приложение .NET в Unix. Это также двоичный код, что означает, что вам даже не нужно перекомпилировать существующую сборку.

 Darin Dimitrov10 янв. 2011 г., 21:40
@Cheeso, ни одна из главных причин начала проекта Mono не заключалась в предоставлении реализации CLR для систем * nix.
 Zac Howland10 янв. 2011 г., 21:48
Я только собирался связать моно-сайт ... вы меня опередили!
 Cheeso10 янв. 2011 г., 21:39
Я считаю, что одной из основных причин создания проекта Mono было то, что было очень легко смешивать код C ++ с кодом .NET, особенно C #.
 Darin Dimitrov10 янв. 2011 г., 21:49
@make, установка Mono требует гораздо меньше усилий, чем перенос кода, который вы разместили на C ++.
 make10 янв. 2011 г., 21:48
Да! Я рассмотрел Mono> однако для того, чтобы он работал на Unix, требуется время и много работы ...

Конвертер C # в C ++ время от времени. Это действительно здорово для преобразования фрагментов из c # в c ++ или c ++ / cli.

   static void Main(string[] args)
    {
        int t = int.Parse(Console.ReadLine());
        for (int i = 0; i < t; i++)
        {
            string []a = Console.ReadLine().Split();
            string[] b = Console.ReadLine().Split();
            int n = int.Parse(a[0]);
            int k = int.Parse(a[1]);
            int c = int.MinValue;
            for (int l = 0; k<=n; l++)
            {
                for (int j = l; j < k; j++)
                {
                    if (int.Parse(b[j]) > c)
                        c = int.Parse(b[j]);
                }
                k++;
                Console.Write(c);
                c = int.MinValue;
            }
        }

целью которого является устранение необходимости присутствия CLR на целевой платформе для запуска приложения. Вместо этого он генерирует код C ++ из заданного кода C #. Этот код C ++ компилируется и связывается на любой целевой платформе, которая поддерживает C ++.

В сообщении в блоге Microsoft говорилось: «Если я действительно хочу написать некоторый код C # и заставить его« просто работать »на новом устройстве IoT, у меня не останется никаких вариантов, пока RyuJIT не сможет генерировать машинный код, который работает с этот процессор и операционная система. " Путем кросс-компиляции C # в C ++ разработчики .Net могут затем доставлять свои приложения, не дожидаясь развертывания .Net на данной платформе.

https://github.com/dotnet/corert

Редактировать:
Перечисленные сайты были прекращены. Я оставлю старый ответ здесь для справки ...

Старый ответ:
Вот онлайн-конвертер, который автоматизирует процесс для вас! ...

Varycode онлайн-конвертер

Он может делать C # в C ++ и обратно, а также конвертеры для Ruby, Python, Java & VB, по-видимому!

Редактировать:
Похоже, что его функциональность C ++ (и java) удалена - он говорит временно, но делает это уже давно. Надеюсь, они скоро воскреснут!
По-прежнему работает для некоторых других языков (VB, Ruby, Python, Boo).

 Knickerless-Noggins07 нояб. 2017 г., 12:50
@noelicus Есть ли альтернатива? В настоящее время отображается сообщение с извинением от Varcode о том, что преобразование C ++ недоступно.
 noelicus07 нояб. 2017 г., 13:21
Хм - не знаю, извините.
 Rook24 мая 2017 г., 14:13
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными в случае изменения связанной страницы. -Из обзора
 Happypig37502 дек. 2018 г., 12:44
Весь домен сейчас продается ...
 noelicus24 мая 2017 г., 14:45
Ссылкаявляется ответ. Ваш комментарий не имеет смысла. Мне больше нечего сказать. Я подозреваю, что вы даже не прочитали вопрос и не подумали, как на это ответить. Я отредактировал ответ так, чтобы он был как можно более понятным для простой ссылки «делись тем, что отвечает на вопрос».

Или использоватьPInvoke из сборки C # для вызова в C ++ DLL.

Или пишиуправлять C ++ и компилировать с ключом / clr, На полученную сборку можно ссылаться и использовать из проектов C #.

 make10 янв. 2011 г., 22:38
спасибо за совет !!!

Ваш ответ на вопрос