精华内容
下载资源
问答
  • Xojo 2018 Release 1.1跨平台编程语言中文安装版(可编译版本)
  • Xojo.2015.r2.2 跨平台编程语言中文安装版(可编译桌面、linux、iso程序)
  • 学会 在windows和ubuntu的系统中安装配置mysql8.0和mysql官方图形界面,学会mysql的sql、事务、锁和存储过程的c api,并解决中文乱码、文件存储等问题;
  • 教程名称:Qt跨平台应用程序编程教程集锦课程目录:【】C GUI QT4 教程【】linux下QT4经典中文教程【】qt creator系统教程【】Qt4.6.3成功移植至s3c2440开发板(个人移植笔记)【】Qtopia编程之道【】QTP关键教程 ...
  • 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。...

    Python(发音:[ 'paiθ(ə)n; (US) 'paiθɔn ]n.蟒蛇,巨蛇 ),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。

    Python 语言的特点:

    简单————Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。

    易学————就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。

    免费、开源————Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自 由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么 Python如此优秀的原因之一——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。

    高层语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。

    可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括 Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS /390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC和Symbian!

    解释性————这一点需要一些解释。一个用编译性语言比如C或C++写的程序可以从源文件(即 C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/ 转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心 如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它 就可以工作了,这也使得你的Python程序更加易于移植。

    面向对象————Python即支持面向过程的编程也支持面向对象的编程。在“面向过程”的语 言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如 C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。

    可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

    可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

    丰富的库————Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、 文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户 界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以 外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

    概括————Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。

    [此简介内容来自百度百科: http://baike.baidu.com/view/21087.htm]

    展开全文
  • 使用跨平台工具开发库 本文介绍如何使用跨平台的 CLI 工具编写 .NET 的库。 CLI 提供了一种高效的、低级别的体验,可以在任何受支持的OS上工作。 您仍然可以使用 Visual Studio 来生成库,如果你更喜欢这种体验,...

    使用跨平台工具开发库

    本文介绍如何使用跨平台的 CLI 工具编写 .NET 的库。 CLI 提供了一种高效的、低级别的体验,可以在任何受支持的OS上工作。 您仍然可以使用 Visual Studio 来生成库,如果你更喜欢这种体验,请参阅 Visual Studio 指南

    系统必备

    需要在计算机上安装 .NET Core SDK 和 CLI 。

    对于本文档中涉及到 .NET Framework 的章节,需要在 Windows 计算机上安装 .NET Framework

    此外,如果想要支持较旧的 .NET Framework 目标,需要从 .NET 下载存档页安装用于较旧 Framework 版本的目标包/开发人员工具包。 请参阅此表:

    .NET Framework 版本 下载内容
    4.6.1 .NET Framework 4.6.1 目标包
    4.6 .NET Framework 4.6 目标包
    4.5.2 .NET Framework 4.5.2 开发人员工具包
    4.5.1 .NET Framework 4.5.1 开发人员工具包
    4.5 适用于 Windows 8 的 Windows 软件开发工具包
    4.0 Windows SDK for Windows 7 和 .NET Framework 4
    2.0、3.0 和 3.5 .NET Framework 3.5 SP1 运行时(或 Windows 8+ 版本)

    如何面向 .NET Standard

    如果对 .NET Standard 不是很熟悉,请参阅 .NET Standard 了解详细信息。

    在该文中,有一个将 .NET Standard 版本映射到各种实现的表格:

    .NET Standard 1.0 1.1 1.2 1.3 1.4 1.5 1.6 2.0
    .NET Core 1.0 1.0 1.0 1.0 1.0 1.0 1.0 2.0
    .NET Framework 1 4.5 4.5 4.5.1 4.6 4.6.1 4.6.1 4.6.1 4.6.1
    Mono 4.6 4.6 4.6 4.6 4.6 4.6 4.6 5.4
    Xamarin.iOS 10.0 10.0 10.0 10.0 10.0 10.0 10.0 10.14
    Xamarin.Mac 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.8
    Xamarin.Android 7.0 7.0 7.0 7.0 7.0 7.0 7.0 8.0
    通用 Windows 平台 10.0 10.0 10.0 10.0 10.0 10.0.16299 10.0.16299 10.0.16299
    Windows 8.0 8.0 8.1          
    Windows Phone 8.1 8.1 8.1          
    Windows Phone Silverlight 8.0              
    Unity 2018 年 1 月 2018 年 1 月 2018 年 1 月 2018 年 1 月 2018 年 1 月 2018 年 1 月 2018 年 1 月 2018 年 1 月

    1 针对 .NET framework 列出的版本适用于 .NET Core 2.0 SDK 和更高版本的工具。旧版本对 .NET Standard 1.5 及更高版本使用了不同映射。如果无法升级到 Visual Studio 2017,可下载适用于 Visual Studio 2015 的 .NET Core 工具

    • 各列表示 .NET Standard 的版本。 每个标题单元格都是一个文档链接,其中介绍了相应版本的 .NET Standard 中新增了哪些 API。
    • 行表示不同的 .NET 实现。
    • 各单元格中的版本号指示要面向此 .NET Standard 版本所需的最低实现版本。
    • 有关交互式表的信息,请参阅 .NET Standard 版本

    以下是此表格对于创建库的意义:

    选择 .NET Standard 版本时,需要在能够访问最新的 API 与能够面向更多的 .NET 实现代码和 .NET Standard 版本之间进行权衡。 通过选择 netstandardX.X 版本(其中 X.X 是版本号)并将其添加到项目文件(.csproj 或 .fsproj),来控制可面向的平台和版本范围。

    面向 .NET Standard 时,有三种主要选项,具体取决于你的需求。

    1. 可使用 .NET Standard 的默认版本,该版本由 netstandard1.4 模板提供,可提供对 .NET Standard 上大多数 API 的访问权限,同时仍与 UWP、.NET Framework 4.6.1 和即将推出的 .NET Standard 2.0 兼容。

      <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
          <TargetFramework>netstandard1.4</TargetFramework>
        </PropertyGroup>
      </Project>
      
    2. 可通过修改项目文件 TargetFramework 节点中的值来使用更低或更高版本的 .NET Standard。

      .NET Standard 版本可后向兼容。 这意味着 netstandard1.0 库可在 netstandard1.1 平台以及更高版本上运行。 但是,不可向前兼容,即版本较低的 .NET Standard 平台无法引用版本较高的平台。 这意味着 netstandard1.0 库不能引用面向 netstandard1.1 或更高版本的库。 选择适合所需、恰当地混合了 API 和平台支持的 Standard 版本。 目前,我们建议 netstandard1.4

    3. 如果希望面向 .NET Framework 版本 4.0 或更低版本,或者要使用 .NET Framework 中提供但 .NET Standard 中不提供的 API(例如 System.Drawing),请阅读以下部分,了解如何面向多个目标。

    如何面向 .NET Framework

     备注

    这些说明假定计算机上安装有 .NET Framework。 请参阅先决条件 获取安装的依赖项。

    请记住,此处使用的某些 .NET Framework 版本不再受支持。 有关不受支持的版本信息,请参阅 .NET Framework 支持生命周期策略常见问题

    如果要达到最大数量的开发人员和项目,可将 .NET Framework 4.0 用作基线目标。 若要以 .NET Framework 为目标,首先需要使用与要支持的 .NET Framework 版本相对应的正确目标框架名字对象 (TFM)。

    .NET Framework 2.0   --> net20
    .NET Framework 3.0   --> net30
    .NET Framework 3.5   --> net35
    .NET Framework 4.0   --> net40
    .NET Framework 4.5   --> net45
    .NET Framework 4.5.1 --> net451
    .NET Framework 4.5.2 --> net452
    .NET Framework 4.6   --> net46
    .NET Framework 4.6.1 --> net461
    .NET Framework 4.6.2 --> net462
    .NET Framework 4.7   --> net47
    

    然后将此 TFM 插入项目文件的 TargetFramework 部分。 例如,以下是如何编写面向 .NET Framework 4.0 的库:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>net40</TargetFramework>
      </PropertyGroup>
    </Project>
    

    就是这么简单! 虽然此库仅针对 .NET Framework 4 编译,但可在更新版本的 .NET Framework 上使用此库。

    如何面向多目标

     备注

    以下说明假定计算机上安装有 .NET Framework。 请参阅先决条件部分,了解需要安装哪些依赖项以及在何处下载。

    如果项目同时支持 .NET Framework 和 .NET Core,可能需要面向较旧版本的 .NET Framework。 在此方案中,如果要为较新的面向目标使用较新的 API 和语言构造,请在代码中使用 #if 指令。 您可能还需要为要面向的每个平台添加不同的包和依赖项,以包含每种情况所需的不同 API。

    例如,假设有一个库,它通过 HTTP 执行联网操作。 对于 .NET Standard 和 .NET Framework 版本 4.5 或更高版本,可从 System.Net.Http 命名空间使用 HttpClient 类。 但是,.NET Framework 的早期版本没有 HttpClient 类,因此可对早期版本使用 System.Net 命名空间中的 WebClient 类。

    项目文件可能如下所示:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFrameworks>netstandard1.4;net40;net45</TargetFrameworks>
      </PropertyGroup>
    
      <!-- Need to conditionally bring in references for the .NET Framework 4.0 target -->
      <ItemGroup Condition="'$(TargetFramework)' == 'net40'">
        <Reference Include="System.Net" />
      </ItemGroup>
    
      <!-- Need to conditionally bring in references for the .NET Framework 4.5 target -->
      <ItemGroup Condition="'$(TargetFramework)' == 'net45'">
        <Reference Include="System.Net.Http" />
        <Reference Include="System.Threading.Tasks" />
      </ItemGroup>
    </Project>
    

    在此处可看到三项主要更改:

    1. TargetFramework 节点已替换为 TargetFrameworks,其中表示了三个 TFM。
    2. net40 目标有一个 <ItemGroup> 节点,引入了一个 .NET Framework 引用。
    3. net45 目标中有一个 <ItemGroup> 节点,引入了两个 .NET Framework 引用。

    生成系统可以识别以下用在 #if 指令中的预处理符号:

    目标框架 符号
    .NET Framework NET20NET35NET40NET45NET451NET452NET46NET461NET462NET47NET471NET472
    .NET Standard NETSTANDARD1_0NETSTANDARD1_1NETSTANDARD1_2NETSTANDARD1_3NETSTANDARD1_4NETSTANDARD1_5NETSTANDARD1_6NETSTANDARD2_0
    .NET Core NETCOREAPP1_0NETCOREAPP1_1NETCOREAPP2_0NETCOREAPP2_1NETCOREAPP2_2

    以下是使用逐目标条件编译的示例:

    using System;
    using System.Text.RegularExpressions;
    #if NET40
    // This only compiles for the .NET Framework 4 targets
    using System.Net;
    #else
     // This compiles for all other targets
    using System.Net.Http;
    using System.Threading.Tasks;
    #endif
    
    namespace MultitargetLib
    {
        public class Library
        {
    #if NET40
            private readonly WebClient _client = new WebClient();
            private readonly object _locker = new object();
    #else
            private readonly HttpClient _client = new HttpClient();
    #endif
    
    #if NET40
            // .NET Framework 4.0 does not have async/await
            public string GetDotNetCount()
            {
                string url = "https://www.dotnetfoundation.org/";
    
                var uri = new Uri(url);
    
                string result = "";
    
                // Lock here to provide thread-safety.
                lock(_locker)
                {
                    result = _client.DownloadString(uri);
                }
    
                int dotNetCount = Regex.Matches(result, ".NET").Count;
    
                return $"Dotnet Foundation mentions .NET {dotNetCount} times!";
            }
    #else
            // .NET 4.5+ can use async/await!
            public async Task<string> GetDotNetCountAsync()
            {
                string url = "https://www.dotnetfoundation.org/";
    
                // HttpClient is thread-safe, so no need to explicitly lock here
                var result = await _client.GetStringAsync(url);
    
                int dotNetCount = Regex.Matches(result, ".NET").Count;
    
                return $"dotnetfoundation.org mentions .NET {dotNetCount} times in its HTML!";
            }
    #endif
        }
    }
    

    如果使用 dotnet build 生成此项目,则在 bin/ 文件夹下有三个目录:

    net40/
    net45/
    netstandard1.4/
    

    其中每个目录都包含每个目标的 .dll 文件。

    如何在 .NET Core 上测试库

    能够跨平台进行测试至关重要。 可使用现成的 xUnit 或 MSTest。 它们都十分适合在 .NET Core 上对库进行单元测试。 如何使用测试项目设置解决方案取决于解决方案的结构。 下面的示例假设测试和源目录位于同一顶级目录下。

     备注

    此示例将使用某些 .NET Core CLI 命令。 有关详细信息,请参阅 dotnet new 和 dotnet sln

    1. 设置解决方案。 可使用以下命令实现此目的:

      mkdir SolutionWithSrcAndTest
      cd SolutionWithSrcAndTest
      dotnet new sln
      dotnet new classlib -o MyProject
      dotnet new xunit -o MyProject.Test
      dotnet sln add MyProject/MyProject.csproj
      dotnet sln add MyProject.Test/MyProject.Test.csproj
      

      这将创建多个项目,并一个解决方案中将这些项目链接在一起。 SolutionWithSrcAndTest 的目录应如下所示:

      /SolutionWithSrcAndTest
      |__SolutionWithSrcAndTest.sln
      |__MyProject/
      |__MyProject.Test/
      
    2. 导航到测试项目的目录,然后添加对 MyProject 中的 MyProject.Test 的引用。

      cd MyProject.Test
      dotnet add reference ../MyProject/MyProject.csproj
      
    3. 还原包和生成项目:

      dotnet restore
      dotnet build
      

       备注

      从 .NET Core 2.0 SDK 开始,无需运行 dotnet restore,因为它由所有需要还原的命令隐式运行,如 dotnet newdotnet build 和 dotnet run。 在执行显式还原有意义的某些情况下,例如 Azure DevOps Services 中的持续集成生成中,或在需要显式控制还原发生时间的生成系统中,它仍然是有效的命令。

    4. 执行 dotnet test 命令,验证 xUnit 是否在运行。 如果选择使用 MSTest,则应改为运行 MSTest 控制台运行程序。

    就是这么简单! 现在可以使用命令行工具跨所有平台测试库。 若要继续测试,现已设置好了所有内容,测试库将非常简单:

    1. 对库进行更改。
    2. 使用 dotnet test 命令在测试目录中从命令行运行测试。

    调用 dotnet test 命令时,将自动重新生成代码。

    如何使用多个项目

    对于较大的库,通常需要将功能置于不同项目中。

    假设要生成一个可以在 C# 和 F# 中以惯用方式使用的库。 这意味着库的使用者可通过对 C# 或 F# 来说很自然的方式来使用它们。 例如,在 C# 中,您可能会这样使用库:

    using AwesomeLibrary.CSharp;
    
    public Task DoThings(Data data)
    {
        var convertResult = await AwesomeLibrary.ConvertAsync(data);
        var result = AwesomeLibrary.Process(convertResult);
        // do something with result
    }
    

    在 F# 中可能是这样:

    open AwesomeLibrary.FSharp
    
    let doWork data = async {
        let! result = AwesomeLibrary.AsyncConvert data // Uses an F# async function rather than C# async method
        // do something with result
    }
    

    这样的使用方案意味着被访问的 API 必须具有用于 C# 和 F# 的不同结构。 通常的方法是将库的所有逻辑转化到核心项目中,而 C# 和 F# 项目定义调用核心项目的 API 层。 本章节接下来将使用以下名称:

    • AwesomeLibrary.Core - 核心项目,其中包含库的所有逻辑
    • AwesomeLibrary.CSharp - 打算在 C# 中使用的公共 API 的项目
    • AwesomeLibrary.FSharp - 打算在 F# 中使用的公共 API 的项目

    可在终端运行下列命令,生成与下列指南相同的结构:

    mkdir AwesomeLibrary && cd AwesomeLibrary
    dotnet new sln
    mkdir AwesomeLibrary.Core && cd AwesomeLibrary.Core && dotnet new classlib
    cd ..
    mkdir AwesomeLibrary.CSharp && cd AwesomeLibrary.CSharp && dotnet new classlib
    cd ..
    mkdir AwesomeLibrary.FSharp && cd AwesomeLibrary.FSharp && dotnet new classlib -lang F#
    cd ..
    dotnet sln add AwesomeLibrary.Core/AwesomeLibrary.Core.csproj
    dotnet sln add AwesomeLibrary.CSharp/AwesomeLibrary.CSharp.csproj
    dotnet sln add AwesomeLibrary.FSharp/AwesomeLibrary.FSharp.fsproj
    

    这将添加上述三个项目,以及将它们链接在一起的解决方案文件。 创建解决方案文件并链接项目后,可从顶层还原和生成项目。

    项目到项目的引用

    引用项目的最佳方式是使用 .NET Core CLI 添加项目引用。 在 AwesomeLibrary.CSharp 和 AwesomeLibrary.FSharp 项目目录中,可运行下列命令:

    $ dotnet add reference ../AwesomeLibrary.Core/AwesomeLibrary.Core.csproj
    

    AwesomeLibrary.CSharp 和 AwesomeLibrary.FSharp 的项目文件现在会将 AwesomeLibrary.Core 作为 ProjectReference 的目标引用。 可通过检查项目文件和查看其中的下列内容来进行验证:

    <ItemGroup>
      <ProjectReference Include="..\AwesomeLibrary.Core\AwesomeLibrary.Core.csproj" />
    </ItemGroup>
    

    如果不想使用 .NET Core CLI,可手动将此部分添加到每个项目文件。

    结构化解决方案

    多项目解决方案的另一个重要方面是建立良好的整体项目结构。 可根据自己的喜好随意组织代码,只要使用 dotnet sln add 将每个项目链接到解决方案文件,就可在解决方案级别运行 dotnet restore 和 dotnet build

    展开全文
  • qDebug()中文乱码问题在vs项目中显示中文 1:在vs下源码是gb2312的所以要转换。  QApplication a(argc, argv); QString str = QStringLiteral("中文测试"); //QString 内部是utf-16 参数是utf-8 所以 // ...

     

    gbk_utf_ansi_asc字符集分析字节序

    字符集

    ●ASCII的7位字符集128个字符

    ●标准ASCII中最高位(b7)用作奇偶校验1个数

    ●IS0-8859-1 扩展ASCII 128-255拉丁

    ANSI标准

    ●AmericanNational Standards Institute美国国家标准学会
    ●多字节字符集(MBCS , Multi- ByteChactacter Set)
    0到127之间的字符,依旧是1个字节代表1个字符
    ●(超出部分)2个字节来表示1个字符

    GB2312 GBK编码
    ●ANSI编码6763常用汉字
    ●两个大于127的字符表示一个汉字
    ●GBK编码GB2312的扩展汉字21003个

    UTF-8

    ●变长的编码方式
    ●单字节与ASCII码相同
    ●对于n字节的符号( n>1 )首字节前n位为1,n+ 1为0,后面字节前两位都为10

    UTF-16 UTF-32



    字节序BOM
    ●LE ( littleendian):小字节字节序低位在前
    ●0x001A23    低地址23 1A 00高地址
    ●BE ( big endian):大字节字节序
    ●BOM字节序标志头
    ●文本头FE FF是BE               FF FE是LE

    QString项目创建空和NULL判断

    QString

    ●16-bit QChars ushort Unicode 4.0
    封装了字符串处理功能
    ●空判断==' 'isNull isEmpty
    ●字符串拼接+=
    ●格式化字符串%1 %2 arg()

    #include <QCoreApplication>
    #include <QDebug>
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        QString str;
        if(str.isNull())   //判断是否为空
        {
            qDebug()<<"isNull"<<endl;
        }
        if(str.isEmpty())
        {
            qDebug()<<"isEmpty"<<endl;
        }
        str = "";
        if(str.isNull())
        {
            qDebug()<<"isNull2"<<endl;
        }
        if(str.isEmpty())
        {
            qDebug()<<"isEmpty2"<<endl;
        }
        QString str2;
        if(str2 == "")
        {
            qDebug()<<"str2 isNULL"<<endl;
        }
    
        QString str3 = "test1";    //拼接
        str3 += "test2";
        str3 += 'A';
        str3.append("test3");
        qDebug()<<str3;
    
        QString str4("test4");
        qDebug()<<str4;
    
        return a.exec();
    }

    QString格式化字符串转换

    #include <QCoreApplication>
    #include <QDebug>
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        QString str;
        str = QString("name=%1 arg=%2 %3 %4 %5")  //字符串拼接
                .arg("xiaoming")
                .arg(15)
                .arg(14.5)
                .arg(123,0,2)   //数,宽度,2进制
                .arg(255,6,16)  //数,宽度,16进制
                ;
        qDebug()<<str;
    
        QString num = QString::number(14); //数转字符串
        qDebug()<<num;
    
        int i = num.toInt();    //字符串转整数
        qDebug()<<"i="<<i;
        qDebug()<<"num double"<<num.toDouble();
    
        QString num2 = QString::number(15.6);
        qDebug()<<num2;
        qDebug()<<num2.toInt();
        qDebug()<<num2.toDouble();
    
        return a.exec();
    }

    遍历字符串

    #include <QCoreApplication>
    #include <QDebug>
    #include <iostream>
    using namespace std;
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        QString str = "xcjasd,asdasd{,[name],[id]},[name]},asda[name]}sdsa";
    
        ///
        //字符串遍历
        for(int i =0; i < str.size(); i++)
        {
            cout<<str[i].toLatin1();
        }
        cout<<endl;
        cout<<"========================\n";
        QString::iterator itr = str.begin();
        for(;itr!= str.end();itr++)
        {
            //(*itr).toLatin1();
            cout<<itr->toLatin1();
        }
        cout<<endl;
    
        ///
        //字符串查找
        QString key = "[name]";
        int pos = str.indexOf(key);
        cout<<"pos = "<<pos<<endl;
        int pos2 = str.indexOf(key,pos+key.size());//在某个位置之后,再查找
        cout<<"pos2 = "<<pos2<<endl;
        int pos3 = str.indexOf(key,pos2+key.size());
        cout<<"pos3 = "<<pos3<<endl;
        cout<<str.indexOf("tttt");  //找不到返回-1
        ///
        //字符串截取	
    	
        //str.chop(2);//去掉字符串最后两个字符
        qDebug()<<str;
    
        //取第一个{括号之前  012{56}9
        int bpos = str.indexOf("{");
        int epos = str.lastIndexOf("}");
        qDebug()<<str.left(bpos);    //之前的几个字符
        //取最后一个}括号之后123456789
        qDebug()<<str.right(str.size()-epos-1);//之后的几个字符 
        //取括号之间
        QString str2 = str;
        str2.chop(str.size()-epos);  //截取
        qDebug()<<str2;
        qDebug()<<str2.right(epos-bpos-1);
    
        ///
        //字符串替换
        str.replace("[name]","xiaoming");
        str.replace("[id]","007");
        qDebug()<<str;
    
    
        ///
        //字符串切割 , csv
        QStringList list1 = str.split(",");
        cout<<"---------------------"<<endl;
        for(int i = 0; i<list1.size();i++)
        {
            qDebug()<<list1[i];
        }
    
        return a.exec();
    }#include <QCoreApplication>
    #include <QDebug>
    #include <iostream>
    using namespace std;
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        QString str = "xcjasd,asdasd{,[name],[id]},[name]},asda[name]}sdsa";
    
        ///
        //字符串遍历
        for(int i =0; i < str.size(); i++)
        {
            cout<<str[i].toLatin1();
        }
        cout<<endl;
        cout<<"========================\n";
        QString::iterator itr = str.begin();
        for(;itr!= str.end();itr++)
        {
            //(*itr).toLatin1();
            cout<<itr->toLatin1();
        }
        cout<<endl;
    
        ///
        //字符串查找
        QString key = "[name]";
        int pos = str.indexOf(key);
        cout<<"pos = "<<pos<<endl;
        int pos2 = str.indexOf(key,pos+key.size());//在某个位置之后,再查找
        cout<<"pos2 = "<<pos2<<endl;
        int pos3 = str.indexOf(key,pos2+key.size());
        cout<<"pos3 = "<<pos3<<endl;
        cout<<str.indexOf("tttt");  //找不到返回-1
        ///
        //字符串截取	
    	
        //str.chop(2);//去掉字符串最后两个字符
        qDebug()<<str;
    
        //取第一个{括号之前  012{56}9
        int bpos = str.indexOf("{");
        int epos = str.lastIndexOf("}");
        qDebug()<<str.left(bpos);    //之前的几个字符
        //取最后一个}括号之后123456789
        qDebug()<<str.right(str.size()-epos-1);//之后的几个字符 
        //取括号之间
        QString str2 = str;
        str2.chop(str.size()-epos);  //截取
        qDebug()<<str2;
        qDebug()<<str2.right(epos-bpos-1);
    
        ///
        //字符串替换
        str.replace("[name]","xiaoming");
        str.replace("[id]","007");
        qDebug()<<str;
    
    
        ///
        //字符串切割 , csv
        QStringList list1 = str.split(",");
        cout<<"---------------------"<<endl;
        for(int i = 0; i<list1.size();i++)
        {
            qDebug()<<list1[i];
        }
    
        return a.exec();
    }

    QString正则表达式

    #include <QCoreApplication>
    #include <QDebug>
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        QString str = "xcxjxcxc123asdasdas 345 asdasd";
        int pos = str.indexOf(QRegExp("[0-9]+"));
        qDebug()<<pos<<endl;
        QString str2 = str;
        str2.replace(QRegExp("[0-9]+") ,"[num]");
        qDebug()<<str2<<endl;
        QStringList rlist = str.split(QRegExp("[0-9]+"));
    
        for(int i = 0; i < rlist.size(); i++)
        {
            qDebug()<<rlist[i];
        }
        return a.exec();
    }

    Qt中文乱码问题在vs项目中显示中文 

    1:在vs下源码是gb2312的所以要转换。 

    	QApplication a(argc, argv);
    	QString str = QStringLiteral("中文测试");    //QString 内部是utf-16   参数是utf-8  所以 
                                                     // QStringLiteral转成utf-8
    	QMessageBox::information(0, "title", str);

     

    2.解决办法

    vs:文件-》高级保存-》

     

    或者::::::这样

    3.

    #include "vs_cn_codec.h"
    #include <QtWidgets/QApplication>
    #include <QDebug>
    #include <QMessageBox>
    #include <iostream>
    #include <QTextCodec>
    #include <windows.h>
    using namespace std;
    
    int main(int argc, char *argv[])
    { 	
    	char *src = "元数据中文GBK";
    	//元数据是gbk或者gb2312 多字节存入QString
    	//本地编码方式 默认GBK
    	QString str1 = QString::fromLocal8Bit(src);  //本地的转成utf-8
    	qDebug() << "str1 = " << str1;
    	
    	//把QString 转为gbk
    	cout << str1.toLocal8Bit().toStdString() << endl;  //cout用的是gbk 
    	//本地处理编码方式,默认是GBK,改为UTF-8
    	//QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    
    	//win api调用qstring作为参数
    	MessageBox(0, str2.toStdWString().c_str(), L"中文标题",0);  //宽字符
    
    	//vs_cn_codec w;
    	//w.show();
    	return a.exec();
    }
    展开全文
  • 这是高清、中文、黑白版本的 ...Unity3D脚本编程 使用C#语言开发跨平台游戏 作者: 陈嘉栋 出版社: 电子工业出版社 副标题: 使用C#语言开发跨平台游戏 出版年: 2016-9-1 页数: 404 装帧: 平装 ISBN: 9787121297182
  • 05 QString字符串处理及中文乱码问题处理 06 QLabelQPushButton和QLineEdit 07 QLayout布局器QObject子节点遍历 08 QCheckBoxQRadioBoxQComboBoxQSlider 09 列表控件列表表格树 10 QDialog和进度条 11 菜单工具栏和...

    01 介绍
    02 QMake项目原理和手动配置qtcreator
    03 Qt信号槽使用及其原理
    04 Qt核心窗口基类QWidget
    05 QString字符串处理及中文乱码问题处理
    06 QLabelQPushButton和QLineEdit
    07 QLayout布局器QObject子节点遍历
    08 QCheckBoxQRadioBoxQComboBoxQSlider
    09 列表控件列表表格树
    10 QDialog和进度条
    11 菜单工具栏和状态栏QMainWindow4
    12 QT事件重载 QEvent4
    13 QT图像绘制QPainter
    14 Qt实战图片编辑器XPS
    attached_files

     

    https://www.javaxxz.com/thread-398250-1-1.html

    展开全文
  • QString str = QStringLiteral("测试的中文\n001xcj"); ui.label->setText(str); ●样式设置字体、颜色、背景色 ●显示图片 qss: 3种 ●播放gif动画 ●界面创建,手动创建 QLabel播放gif动画 ...
  • 【课程目录】 │ 01 介绍.rar │ 02 QMake项目原理和手动配置qtcreator.rar ...│ 05 QString字符串处理及中文乱码问题处理.rar │ 06 QLabelQPushButton和QLineEdit.rar │ 07 QLayout布局器QObject子节点遍历...
  • 本资源是 wxWidgets 可视化编程 C++ 中文版教程 为 pdf 文档
  • Xojo2014中文版是一款非常好用且功能强大的跨平台编辑语言开发环境,通过Xojo可以轻松创建出需要的应用程序,非常适合编程初学者使用,并且Xojo2014软件自带了简体中文语言,不用破解汉化即可实现中文界面,可以大大...
  • PyAutoGUI是人类的跨平台GUI自动化Python模块。 用于以编程方式控制鼠标和键盘。 pip install pyautogui 完整文档可在 简体中文文档可在 源代码位于 如果您需要安装Python的帮助,请访问 依存关系 PyAutoGUI支持...
  • 简体中文 Contents Docs Requirements Installation Update Examples Authors Plans Donate Contributors License Docs GoDoc API Docs 中文文档 Requirements: Now, Please make sure Golang, GCC is installed...
  • http://cnfreesoft.googlegroups.com/web/wxindex.htm... 《wxWidgets跨平台GUI开发》目录介绍 为什么要使用wxWidgets?wxWidgets的历史wxWidgets社区wxWidgets和面向对象编程许可协议wxWidgets的体系结构第一章小结...
  • Java入门-跨平台机制

    2020-08-21 09:12:43
    跨平台是怎么实现的??? 知识是死的,思路更重要 高级计算机编程语言 越低级,越贴近于机器(二进制 越高级,越贴近于人 语言 是用来交流的 中国人(中文)Java 翻译(中日) 翻译(中英) 翻译(中印...
  • BlitzMax 绿色中文版(游戏编程),blitzbasic语言系列中的一员。是一个比较完善的游戏basic编程软件。我做了汉化处理。支持对象编程跨平台等等优点
  • libuv 中文编程指南

    千次阅读 2018-01-01 05:06:47
    最近看了一些有关 libuv 的东西,另外复习了一些与同步、异步、阻塞、非阻塞,异步IO(aio)的东西, 算是技术积累吧,等有时间了整理出一个完整的文档出来,希望在今后的编程中用...libuv 是 Node 的新跨平台抽象层,用
  • 鸟简介:蓝鸟中文编程是一款跨平台开发工具,中文代码可视化编程,语法与E4A相同,利用html5技术,编译生成的网页可以部署在服务器上供浏览器跳转浏览,也可以将生成的网页打包成APP,可安装在安卓和苹果设备中运行...
  • wxWidgets 中文pdf参考资料,名字叫使用wxWidgets进行跨平台程序开发 中文
  • liteide mac中文版是一个简单的开源跨平台Go IDE,LiteIDE X是专为Go设计的集成开发环境,提供了您期望从这样的应用程序中获得的所有重要功能,包括代码完成,语法突出显示,自动构建系统,包浏览器和调试工具。...
  • Qt高级编程中文

    2018-08-22 17:29:41
    不错的资料,基于C++的跨平台开发。很不错值得推荐。需要的可以下载
  • 中文编程从入门到精通本书介绍了全中文、全可视、全编译、跨平台编程语言——“易语言”。 本资源转载自网络,如有侵权,请联系csdn管理员删除
  • 本书介绍了全中文、全可视、全编译、跨平台编程语言——“易语言”。该程序实现了真正的中文编程,彻底摆脱英文的语言模式,符合中国人的习惯。“易语言”功能强大,资源丰富,是广大编程爱好者的zui理想的选择。...
  • SDL是一个跨平台的多媒体库,它通过OpenGL和2D视频帧缓冲,提供了针对音频、视频、键盘、鼠标、控制杆及3D硬件的低级别的访问接口。它在MPEG播放软件、模拟器以及许多游戏中得到广泛的应用,其中包含了获得大奖的...
  • 大连大有吴涛易语言软件开发有限公司的“易语言汉语编程环境”以软件自主开了一款全中文、全可视、跨平台编程语言,在易语言及其编译器的设计与实现、可视化汉语编程的构建、提供多种语言版本等方面具有创新,在...
  • 由于Python是一门跨平台的语言,本书中的内容和示例适用于任何平台(除非特别指出的例外情况)。在可能独立于平台的情况下,本书中的示例都尽量设计成跨平台的。 目录: 第Ⅰ部分 初步了解Python 第1章 编程基础和字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 601
精华内容 240
关键字:

中文跨平台编程