zoukankan      html  css  js  c++  java
  • wxWidgets Windows下控制台输入输出

    1 #include <wx/wx.h>
    2 #include <cstdlib>
    3  void strtest()
    4 {
    5 wxString str1=wxT("Linux");
    6 wxString str2(wxT("Operating"));
    7 wxString str3(wxT("System"));
    8 wxString str4(wxT("操作系统"));
    9
    10 wxString str=str1+wxT(" ")+str2+wxT(" ")+str3+wxT(" ")+str4+wxT("\n");//
    11   const char* output= (const char*)wxConvCurrent->cWX2MB(str);//+str4;
    12 printf(str);
    13
    14 wxPuts(str);
    15 printf("\n");
    16
    17 wxPrintf(str);
    18 printf("\n");
    19
    20 wxPuts(output);
    21 printf("\n");
    22
    23 wxPrintf(output);
    24 printf("\n");
    25 }
    26
    27 int main(int argc,char* argv[])
    28 {
    29 strtest();
    30 system("pause");
    31
    32 }

    在上面的五种输出方式中,只有第一种能完全正确显示,后面四种中文字符串没有显示。那么如果用iostream流会如何呢?

    1 #include <wx/wx.h>
    2 #include <cstdlib>
    3 #include <iostream>
    4 using namespace std;
    5
    6 void strtest1()
    7 {
    8 wxString str1=wxT("Linux");
    9 wxString str2(wxT("Operating"));
    10 wxString str3(wxT("System"));
    11 wxString str4(wxT("操作系统"));
    12
    13 wxString str=str1+wxT(" ")+str2+wxT(" ")+str3+wxT(" ")+str4+wxT("\n");//
    14 cout<<str.c_str();
    15
    16 string input;
    17 cout<<"Please tell me your name:"<<wxT("请告诉我你的名字");
    18 getline(cin,input,'\n');
    19 wxString result(input);
    20 cout<<input<<endl;
    21 cout<<result.c_str()<<endl;
    22 }
    23 int main(int argc,char* argv[])
    24 {
    25 strtest1();
    26 system("pause");
    27
    28 }

    结果显示输出正确,除了[<<wxT("请告诉我你的名字")]显示为乱码,oops!!

    你可以有至少两种办法解决。一是把该字符串字面值声明为一wxString的变量msg,然后cout<<msg.c_str(),或者你可以直接cout<<wxString(wxT("请告诉我你的名字")).c_str().搞定。

    剩下最后一件值得一提的是字符串wxT("请告诉我你的名字")的长度,如果你声明了wxString str=wxT("请告诉我你的名字"),那么str.length()或者str.size()的值都是8,而不是16。中英文混合的字符串一个英文字母占1,而一个汉字也占1.你就晕吧~

  • 相关阅读:
    Feign客户端的重构,新建springcloud架构
    Feign客户端实现RPC 调用
    Ribbon负载均衡实现
    负载均衡器nginx和ribbon区别
    eureka和zookeeper注册中心的区别
    SpringCloud服务的注册发现--------consul实现服务与发现
    Consul+upsync+Nginx 动态负载均衡
    Java并发编程笔记之ConcurrentLinkedQueue源码探究
    Java并发编程笔记之StampedLock锁源码探究
    Java并发编程笔记之读写锁 ReentrantReadWriteLock 源码分析
  • 原文地址:https://www.cnblogs.com/godspeedsam/p/1983894.html
Copyright © 2011-2022 走看看