// StringOperateDlg.cpp: 实现文件
//#include "pch.h"
#include "framework.h"
#include "StringOperate.h"
#include "StringOperateDlg.h"
#include "afxdialogex.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx
{
public:CAboutDlg();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_ABOUTBOX };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持// 实现
protected:DECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()// CStringOperateDlg 对话框CStringOperateDlg::CStringOperateDlg(CWnd* pParent /*=nullptr*/): CDialogEx(IDD_STRINGOPERATE_DIALOG, pParent), m_strSource(_T("")), m_strSqlit(_T("")), m_nInput(0), m_strOutput(_T("")), m_nFormat(0)
{m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CStringOperateDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, m_strSource);DDX_Text(pDX, IDC_EDIT2, m_strSqlit);DDX_Text(pDX, IDC_EDIT3, m_nInput);DDX_Text(pDX, IDC_EDIT4, m_strOutput);DDX_Control(pDX, IDC_LIST2, m_ListSqlit);DDX_CBIndex(pDX, IDC_COMBO1, m_nFormat);
}BEGIN_MESSAGE_MAP(CStringOperateDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BTN_SPLIT, &CStringOperateDlg::OnBnClickedBtnSplit)ON_BN_CLICKED(IDC_BTN_FORMAT, &CStringOperateDlg::OnBnClickedBtnFormat)
END_MESSAGE_MAP()// CStringOperateDlg 消息处理程序BOOL CStringOperateDlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != nullptr){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);            // 设置大图标SetIcon(m_hIcon, FALSE);        // 设置小图标// TODO: 在此添加额外的初始化代码SetDlgItemText(IDC_EDIT1, "abc--def--ghi--jkl");SetDlgItemText(IDC_EDIT2, "--");return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}void CStringOperateDlg::OnSysCommand(UINT nID, LPARAM lParam)
{if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}
}// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。void CStringOperateDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}
}//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CStringOperateDlg::OnQueryDragIcon()
{return static_cast<HCURSOR>(m_hIcon);
}void CStringOperateDlg::OnBnClickedBtnSplit()
{// TODO: 在此添加控件通知处理程序代码while (m_ListSqlit.GetCount()){m_ListSqlit.DeleteString(0);}UpdateData(true);if (m_strSqlit.IsEmpty()){MessageBox("分割字符串不能为空");return;}CStringArray strDestArray;StringSplit(m_strSource, strDestArray, m_strSqlit);for (size_t i = 0; i < strDestArray.GetSize(); i++){const CString& strTemp = strDestArray.GetAt(i);m_ListSqlit.AddString(strTemp);}UpdateData(false);}void CStringOperateDlg::StringSplit(CString strSource, CStringArray& strDestArray, CString strDivision)
{// TODO: 在此处添加实现代码.strDestArray.RemoveAll();int nPos = 0;int nPrePos = 0;while (true){nPrePos = nPos;nPos = strSource.Find(strDivision, nPos);if (nPos==-1){CString strTemp = strSource.Right(strSource.GetLength() - nPrePos);strDestArray.Add(strTemp);break;}if (nPos>nPrePos){CString strTemp = strSource.Mid(nPrePos, nPos - nPrePos);strDestArray.Add(strTemp);}nPos += strDivision.GetLength();}
}void CStringOperateDlg::OnBnClickedBtnFormat()
{// TODO: 在此添加控件通知处理程序代码UpdateData(true);if (m_nFormat==-1){MessageBox("请选择格式化类型");return;}CString strInput = "";GetDlgItem(IDC_EDIT_INPUT)->GetWindowText(strInput);if (strInput.IsEmpty()){MessageBox("输入不能为空");return;}float fInput = -1;switch (m_nFormat){case 0:m_strOutput.Format("8进制输出为:%o", m_nInput);break;case 1:m_strOutput.Format("10进制输出为:%d", m_nInput);break;case 2:m_strOutput.Format("16进制小写输出为:%x", m_nInput);break;case 3:m_strOutput.Format("16进制大写输出为:%X", m_nInput);break;case 4:fInput = (float)m_nInput;m_strOutput.Format("浮点数输出为:%.2f", fInput);break;case 5:fInput = (float)m_nInput;m_strOutput.Format("指数型输出为:%3.2e", fInput);break;default:break;}UpdateData(false);
}

c++ 字符串分割和数字格式化输出相关推荐

  1. C#:String.Format数字格式化输出

    C#:String.Format数字格式化输出 int a = 12345678;    //格式为sring输出 //   Label1.Text = string.Format("asd ...

  2. String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}

    String.Format数字格式化输出 {0:N2} {0:D2} {0:C2} 数字 {0:N2} 12.36  数字 {0:N0} 13  货币 {0:c2} $12.36  货币 {0:c4} ...

  3. C++对带有分隔符的字符串 分割为数字的通用解决方案

    C++对带有分隔符的字符串 分割为数字的通用解决方案 参考文章: (1)C++对带有分隔符的字符串 分割为数字的通用解决方案 (2)https://www.cnblogs.com/ayanmw/p/3 ...

  4. JAVA --数字与字符串(四)格式化输出

    格式化输出 语法:printf(格式化语句,变量名) public static void main(String args[]) {String a = "明天星期%s";Str ...

  5. php 字符串分割出数字,php 字符串分割函数的总结

    在php中字符串分割函数有很多很多,下面我来给各位朋友来介绍各种php中字符串分割实例,有需要的朋友可进入参考参考. PHP函数split()的基本语法为 array split ( string $ ...

  6. Python之format格式化函数以及数字格式化输出规范

    目录 一.format函数官方解释 二.format数字格式化 format函数的应用场景,主要用于Python字符串的处理,以及计算机二级考试基础内容. 一.format函数官方解释 str.for ...

  7. R语言 eval parse 字符串内有引号 格式化输出

    字符串中添加引号时,要用 \ 转义 ' 输出为' 在eval表达式中存在引号,要转义 格式化输出 sprintf("%03d",i) # 前面补0 R语言 colormap设置 p ...

  8. python3纵向输出字符串_Python 3.x 格式化输出字符串 % format 笔记

    python格式化字符串有%和{}两种 字符串格式控制符. 字符串输入数据格式类型(%格式操作符号) %%百分号标记 %c字符及其ASCII码 %s字符串 %d有符号整数(十进制) %u无符号整数(十 ...

  9. .net String.Format数字格式化输出

    内容转载自:http://www.cnblogs.com/lqb/archive/2008/08/04/1259498.html 前面内容这个做的总结的很全,今后有新增的我继续往后补充.请留意我增加的 ...

  10. linux shell:字符串分割并反序输出

    我想将一个以.分割的字符串(com.sun.java)反序输出为(java.sun.com),在这里<Reverse order of dot-delimited elements in a s ...

最新文章

  1. 查看linux是多少位的
  2. MySQL读写分离中间件解决
  3. Linux笔记-为操作系统配ntp服务地址(适用达梦操作系统)
  4. canoe变量和信号_CANoe的经验总结及如何进行 CAN Signal layout
  5. 强化学习 ---baseline项目之 TensorFlow的训练参数的存储和加载
  6. Linux-Ubuntu首次使用root账户登录
  7. linux 的一些实用工具,linux 命令行下的一些实用工具
  8. DateTime字段控件值显示短格式的做法
  9. html怎么做成响应式的,怎么用html5完成响应式布局?
  10. JS学习总结(2)——变量
  11. Wherehows项目简介
  12. 详解ResNet残差网络
  13. Frank Pfenning
  14. c语言一行灯的熄灯问题,熄灯问题 --POJ 2811-ACM
  15. 读书笔记--一个人的朝圣
  16. 旧手机(小米4)装linux的一个记录
  17. 一个IP可以登几个拼多多后台 拼多多如何推广营销
  18. 基于vmware16 和 ubuntu20.04, 搭建单节点 kubernetes 1.22.2
  19. oracle数据库的scn,Oracle数据库SCN详解
  20. 大数据看惊天逆转+绝杀,亚洲杯时隔16年夺冠,恭喜女足

热门文章

  1. 经典SQL查询语句大全
  2. 产品全生命周期的产品结构和配置管理构架
  3. 2022元旦首发,2021年阿里春招+秋招+社招+校招Java后端开发面试题汇总,看完轻松收下offer
  4. linux编译trinitycore,[MAC] 编译安装和测试《魔兽世界》模拟服务端 TrinityCore
  5. 互联网金融指导意见落地 行业发展开始步入正轨
  6. 神器vimium:比同级程序员成长更快,我主要靠它
  7. 郑捷《机器学习算法原理与编程实践》学习笔记(第二章 中文文本分类(一))...
  8. 洛谷T37537 公主的考验
  9. php下载列表如何实现,phpcms v9 列表页直接下载功能代码实现
  10. 【2021年度总结】旧年的喜怒哀乐和新年的虎啸龙腾