如何将C#转换为C ++

时间:2011-01-10 20:34:50

标签: c# c++ mixing

有人可以帮助我将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]);
            }

        }
    }
}

实际上因为在unix上混合使用C#和C ++很复杂,我试图将C#转换为C ++ 所以,任何帮助将非常感激

提前感谢您的回复,帮助和时间,

9 个答案:

答案 0 :(得分:22)

  

实际上因为在unix上混合使用C#和C ++很复杂,我试图将C#转换为C ++

您考虑过Mono了吗?在开始学习C ++之前,为了在Unix上转换和运行现有的.NET应用程序,这是值得检查的。它也是二进制兼容的,这意味着您甚至不需要重新编译现有的程序集。

答案 1 :(得分:8)

几乎不可能直接将C#转换为C ++,以便它可以在Unix机器上运行。

这主要是因为Unix机器上的.NET Framework不可用(来自C ++)。 Mono将允许您运行许多C#/ .NET程序,但不支持C ++ / CLI(允许直接使用.NET Framework的C ++扩展)。

转换语言是可能的 - 尽管由于方法上的差异很困难(例如,C#中的垃圾收集),但框架调用将需要移植到不同的库,并且它通常不是直接翻译的良好候选者。 / p>

例如,在上面的代码中,您必须决定用于Web访问的C ++库 - 一旦您做出了这样的选择,它将决定调用该库来下载网站字符串所需的代码。

答案 2 :(得分:8)

学习C#,学习C ++,并花大量时间重写。

或者使用C#程序集中的PInvoke来调用C ++ DLL。

或写managed C++ and compile with the /clr switch。可以从C#项目中引用和使用生成的程序集。

答案 3 :(得分:4)

考虑一下Vala。 Vala是一种类似C#的语言,可以转换为C,然后转换为可执行文件。与C#几乎没有什么区别。你仍然需要使用你的大脑。

答案 4 :(得分:3)

修改
列出的网站已经停产。我会在这里留下旧答案以供参考......

旧答案:
这是一个在线转换器,将为您自动化过程! ...

Varycode online converter

它可以做C#到C ++,然后再回来,以及Ruby,Python,Java和Linux的转换器。 VB,显然!

修改
它似乎已经删除了它的C ++(和java)功能 - 它暂时说,但现在已经这样做了很长时间。希望他们很快就会复活! 仍适用于其他一些语言(VB,Ruby,Python,Boo)。

答案 5 :(得分:2)

您可能需要考虑CoreRT。它是一个.NET项目,其目标是消除CLR在目标平台上运行应用程序的需要。相反,它从给定的C#代码生成C ++代码。该C ++代码在任何支持C ++的目标平台上编译和链接。

微软博客上的帖子说:&#34;如果我真的想写一些C#代码,并且让它“正常工作”。在新的物联网设备上,我没有任何选择,直到RyuJIT能够生成与该处理器和操作系统一起使用的机器代码。&#34;通过将C#交叉编译为C ++,.Net开发人员可以提供他们的应用程序,而无需等待.Net在给定平台上部署。

https://github.com/dotnet/corert

答案 6 :(得分:1)

以下是您可以找到C#转换为C ++转换器的网站。

https://github.com/ASDAlexander77/cs2cpp

您只需执行一些步骤即可从C#生成和编译C ++代码。此外,该应用程序将C#代码转换为跨平台兼容的C ++。

答案 7 :(得分:0)

正如这里已经提到的,库的翻译可能是一个问题,但是在某些情况下可能会有所帮助的一个开源项目是:

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

主页上的引文:

  

它提供了方便移植应用程序的工具   从.NET等高级语言到   本地语言(如C ++)。这是一个研究项目   它正在与   UPC的合作-BarcelonaTech和AlterAid S.L。

答案 8 :(得分:-6)

   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;
            }
        }