zoukankan      html  css  js  c++  java
  • 字符串格式转换

     

    CString头文件#include <afx.h>

    string头文件#include <string.h>

    1、CString转char *

    CString cstr;

    char *p =(LPSTR)(LPCTSTR)cstr;

    2、string转 CString
    CString.format(”%s”, string.c_str());

    c_str()确实比data()要好.

    3、char转 CString
    CString.format(”%s”, char*);

    4、char转 string
    string s(char *);

    只能初始化,在不是初始化的地方最好还是用assign().

    5、string转 char *
    char *p = string.c_str();

    6、CString转 string
    string s(CString.GetBuffer());

    GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.

    ―――――――――――――――――――――

    C++标准函数库》中说的
    有三个函数可以将字符串的内容转换为字符数组和C―string
    1、data(),返回没有”/0“的字符串数组
    2、c_str(),返回有”/0“的字符串数组
    3、copy()

    ―――――――――――――――――――――

    CString与int、char*、char[100]之间的转换--

    1、CString互转int

    (1)将字符转换为整数,可以使用atoi、_atoi64或atol。
    (2)将数字转换为CString变量,可以使用CString的Format函数。如
        CString s;
        int i = 64;
        s.Format(”%d”, i)
    Format函数的功能很强,值得你研究一下。

    voidCStrDlg::OnButton1()
    {
       // TODO: Add your control notificationhandler code here
       CString
       ss=”1212.12″;
       int temp=atoi(ss);
       CString aa;
       aa.Format(”%d”,temp);
       AfxMessageBox(”var is ” + aa);
    }

    sart.Format(”%s”,buf);

    2、CString互转char*

    CString strtest;
    char * charpoint;

    ///char * TO cstring
    charpoint=”give string a value”;
    strtest=charpoint;

    ///cstring TO char *
    charpoint=strtest.GetBuffer(strtest.GetLength());

    标准C里没有string,char*==char []==string

    可以用CString.Format(”%s”,char *)这个方法来将char *转成CString。要把CString转成char*,用操作符(LPCSTR)CString就可以了。

    3、CString转换 char[100]

    ///char[100] TOcstring

    char a[100];
    CString str(”aaaaaa”);

    ///cstring TO char[100]

    strncpy(a,(LPCTSTR)str,sizeof(a));

     

    .CString与TCHAR数组 相互转换

     TCHAR数组转到CString很简单:使用CString的Format就行。

        TCHAR m_buf[100] = _T("Hello");

        CString str;

        str.Format(L"%s",m_buf);

         现在就来CString转为TCHAR数组,这个就有点麻烦了。因为网上有很多的解决方案,但是都不怎么理想。我们使用_tcscpy()宏。

    CString str = L"sssssss";

    TCHAR m_buf[20];

    _tcscpy(m_buf, str);  //类型之间的转换真麻烦,知道定义这个宏的好处了。

    自己找了半天,这个方法很有效!用memcpy,strcpy都不行。。。

    TCHAR szDefaultDir[MAX_PATH];
                    CString strDef(_T("E:\"));
                    memcpy(szDefaultDir, strDef.GetBuffer(strDef.GetLength() * 2), strDef.GetLength() * 2);
                    strDef.ReleaseBuffer();
                    szDefaultDir[strDef.GetLength()] = 0;
  • 相关阅读:
    中小企业发展环境十强
    asp.net发送邮件时报:无法从传输连接中读取数据: net_io_connectionclosed。
    .netCore学习一
    Python项目打包
    Linux中安装JMeter并执行压测
    用Python生成随机长度的字符串和随机长度的数字
    用Python将内容输出到文档的两种方式
    Python学习系列之项目打包成可执行exe文件(三十五)
    Python学习系列之Python中的包(三十一)
    Python学习系列之以主程序形式运行(三十)
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5705171.html
Copyright © 2011-2022 走看看