zoukankan      html  css  js  c++  java
  • C语言中string char int类型转换

     C语言中string char int类型转换 (2013-01-24 16:50:29)
    转载
    ▼
    标签: 操作符 int char c语言 类型转换     分类: C/Cpp
    
    1,char型数字转换为int型
    
        char a[] = "32";
    
        printf("%d
    ", a[0]-'0');//输出结果为3
    
    2,int转化为char
    
    *********************************** linux c ***********************************
    
     (1)字符串转换成数字,用atoi,atol,atof,分别对应的是整型,long型,double型。以整型为例:
    
        char str[]="1234";
        int a=atoi(str);
    
    
    (2)数字换成字符串,用sprintf.以整型为例。
    
        char str[10];
        int a=1234;
        sprintf(str,"%d",a);
    
     **********************************************************************
    
    string 是c++标准库里面其中一个,封装了对字符串的操作
    
    把string转换为char* 有3中方法:
    1.data
    
        如:
    
        string str="abc";
    
        char *p=str.data();
    
    2.c_str
    
        如:string str="gdfd";
           
    
            char *p=str.c_str();
    
    3. copy
    
        比如
    
            string str="hello";
    
            char p[40];
            str.copy(p,
    
            str.copy(p,
    
            str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置
    
            *(p+5)=''; //要手动加上结束符
    
            cout < <p;
    
        示例程序:
    
            #include<iostream>
    
            #include<string>
    
            using namespace std;
    
            int main()
    
            {
    
                string line;
    
                getline(cin,line);
    
                char str[20];
    
                int size=line.size();
    
                line.copy(str,line.size(),0);
    
                //char str[20]="liuyanbo";
    
                char upper[20];
    
                for(int i=0;i<size;++i)
    
                {
    
                   //cout<<static_cast<char>(toupper(str[i]));
    
                   upper[i]=static_cast<char>(toupper(str[i]));
    
                }
    
                upper[i]='';
    
                cout<<upper<<endl;
    
                return 0;
    
            }
    
    
    C语言 单引号和双引号的区别
    
    1、含义不同。
    
    用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。而一般我们的编译器采用的都是ASCII字符集。因此's'的含义其实和十进制数115的含义是一致的。
    
    而用双引号引起的字符串,代表的是一个指向无名数组起始字符的指针。
    
    2、大小不同。
    
    用单引号引起的一个字符大小就是一个字节。
    
    而用双引号引起的字符串大小是字符的总大小+1,因为用双引号引起的字符串会在字符串末尾添加一个二进制为0的字符''。
    
     
    
    数组的输入:
    
     int h[10] = {1,2,3};
     for (int m=0; m<4; m++)
     {
      scanf("%d", &h[m]);
     }
     printf("%d
    ", h[0]);
    
    
    itoa
      功 能:把一整数转换为字符串
      用 法:char *itoa(int value, char *string, int radix);
      详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.
      参数:
      value: 待转化的整数。
      radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。
      * string: 保存转换后得到的字符串。
      返回值:
      char * : 指向生成的字符串, 同*string。
    
      备注:该函数的头文件是"stdlib.h"
    
    #include
    
      #include
    
      int main()
    
      {
    
      int number = 123456;
    
      char string[25];
    
      itoa(number, string, 10);
    
      printf("integer = %d string = %s
    ", number, string);
    
      return 0;
    
      }
    atoi
      C语言库函数名: atoi
      功 能: 把字符串转换成整型数
      函数说明: atoi()会扫描参数nptr字符串,检测到第一个数字或正负符号时开始做类型转换,之后检测到非数字或结束符 0 时停止转换,返回整型数。
      原型: int atoi(const char *nptr);
      需要用到的头文件: #include
     程序例:
      1)
      #include
      #include
      int main(void)
      {
      int n;
      char *str = "12345.67";
      n = atoi(str);
      printf("string = %s integer = %d
    ", str, n);
      return 0;
      }
      执行结果
    
      string = 12345.67 integer = 12345
    
    string 转 CString
    CString.format("%s", string.c_str());
    
    char 转 CString
    CString.format("%s", char*);
    
    charstring
    string s(char *);
    
    stringchar *
    char *p = string.c_str();
    
    CString 转 string
    string s(CString.GetBuffer());
    
    1string -> CString
    CString.format("%s", string.c_str());
    用c_str()确实比data()要好.
    2char -> string
    string s(char *);
    你的只能初始化,在不是初始化的地方最好还是用assign().
    3,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]之间的转换- -
    
    
    CString与int、char*、char[100]之间的转换- -
    
    
    
    CString互转int
    
    将字符转换为整数,可以使用atoi、_atoi64或atol。
    而将数字转换为CString变量,可以使用CString的Format函数。如
    CString s;
    int i = 64;
    s.Format("%d", i)
    Format函数的功能很强,值得你研究一下。
    
    void CStrDlg::OnButton1()
    {
    // TODO: Add your control notification handler code here
    CString
    ss="1212.12";
    int temp=atoi(ss);
    CString aa;
    aa.Format("%d",temp);
    AfxMessageBox("var is " + aa);
    }
    
    sart.Format("%s",buf);
    
    CString互转char*
    
    ///char * TO cstring
    CString strtest;
    char * charpoint;
    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就可以了。
    
    
    CString转换 char[100]
    
    char a[100];
    CString str("aaaaaa");
    strncpy(a,(LPCTSTR)str,sizeof(a));
    
    CString类型的转换成int
    将字符转换为整数,可以使用atoi、_atoi64或atol。
    
    //CString aaa = "16" ;
    //int int_chage = atoi((lpcstr)aaa) ;
    
    
    而将数字转换为CString变量,可以使用CString的Format函数。如
    CString s;
    int i = 64;
    s.Format("%d", i)
    Format函数的功能很强,值得你研究一下。
    如果是使用char数组,也可以使用sprintf函数。
    
    //CString ss="1212.12";
    //int temp=atoi(ss);
    //CString aa;
    //aa.Format("%d",temp);
    
    
    数字->字符串除了用CString::Format,还有FormatV、sprintf和不需要借助于Afx的itoa
    
    #include
    
    int atoi(const char *nptr);
    long atol(const char *nptr);
    long long atoll(const char *nptr);
    long long atoq(const char *nptr);
    string aa("aaa");
    char *c=aa.c_str();
    
    
    cannot convert from 'const char *' to 'char *'
    const char *c=aa.c_str();
    
    string.c_str()只能转换成const char *,
    要转成char *这样写:
    
    string mngName;
    char t[200]; memset(t,0,200); strcpy(t,mngName.c_str());

    http://blog.sina.com.cn/s/blog_63041bb801016b4x.html

  • 相关阅读:
    临时禁用大型列表上的列表视图阈值
    临时禁用大型列表上的列表视图阈值
    SharePoint Foundation 2010 托管客户端对象模型概述 创建 Windows 控制台托管的客户端对象模型应用程序
    如何隐藏MOSS2010的网站操作菜单
    MOSS2010的列表视图参数设置以及列表记录样式设置
    使用SharePoint Server 2010搜索PDF文档
    Sharepoint2010如何使用Linq to Sharepoint
    水晶報表字段超鏈結4/28
    4月21自考4/23
    [轉]統籌方法華羅庚
  • 原文地址:https://www.cnblogs.com/pengmn/p/9802618.html
Copyright © 2011-2022 走看看