找回密码
 欢迎注册
查看: 15973|回复: 5

[提问] 关于MinGW的宽字符串输出问题

[复制链接]
发表于 2011-4-5 11:38:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
用 MinGW编译器,想打印一个“你好,世界”。 真折腾,到现在还没解决, 有谁清楚吗,Help!!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-4-5 21:33:03 | 显示全部楼层
找到一种可行的方案了:
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4. wcout << setlocale(LC_ALL, "chs" )
  5. <<endl<<L"还是不行吗" << endl;
  6. }
复制代码
g++ test.cpp -finput-charset=GBK
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-6-17 21:12:51 | 显示全部楼层
  1. #include <string>
  2. #include <locale>
  3. using namespace std;
  4. void main()
  5. {
  6. unsigned int n, d[9];
  7. int pre, i, high, low;
  8. wchar_t c[11] = L"零一二三四五六七八九";
  9. wchar_t p[11] = L"个十百千万十百千亿";
  10. for (i = 0; i < 9; i ++) d[i] = 0;
  11. cout << "请输入数字 :";
  12. cin >> n;
  13. if (n >= 1000000000)
  14. {
  15. cout << "输入数字过大"<<endl;
  16. exit(1);
  17. }
  18. i = 0; while (n > 0)
  19. {
  20. d[i++] = n % 10;
  21. n /= 10;
  22. }
  23. high = i-1; //最高位
  24. low = 0; //最低位 while (d[low] == 0) low ++;locale loc( "chs" );
  25. wcout.imbue(loc);
  26. cout << endl << "大写形式:";if (n == 0) { cout << "零" << endl; exit(0); } //特殊处理零
  27. pre = 0;
  28. for (i = high; i >= low; i --)
  29. {
  30. if (d[i] > 0)
  31. { wcout << c[d[i]]; if (i > 0) wcout << p[i]; }
  32. else
  33. if (pre)
  34. wcout << L"零";
  35. pre = (d[i] != 0);
  36. }
  37. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-8-28 09:01:35 | 显示全部楼层
这个帖子要收藏一下,以后用得到
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-9-28 06:48 , Processed in 0.023695 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表