• 字符串格式转换


     

    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;
  • 相关阅读:
    Java项目转换成Web项目
    Ajax模拟Form表单提交,含多种数据上传
    雪崩-隔离-熔断-降级-限流-sentinel,hystrix
    nacos集群搭建入门
    配置虚拟机的ip地址,dns地址以及hosts
    service network restart失败
    索引字段为空或者不为空的时候作为条件查询,索引是否起作用
    Invocation of init method failed; nested exception is java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available
    ffmpeg+java视频转换基础示例
    字符串转换为指定的泛型对象
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5705171.html
Copyright © 2020-2023  润新知