• C++/C---字符串


    其他类型转字符串

    itoa

    功 能:把一整数转换为字符串
    用 法:char *itoa(int value, char *string, int radix);
    详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.其中value为要转化的整数, radix是基数的意思,即先将value转化为radix进制的数,之后在保存在string中.
    备注:该函数的头文件是"stdlib.h" 

    #include <stdlib.h>
    #include <stdio.h>
    int main(){
    int number = 123456;
    char string[25];
    itoa(number, string, 10);
    printf("integer = %d string = %s
    ", number, string);
    return 0; 
    }

    可是他不是c的标准库函数,不同编译器可能报错,尽量避免使用

    int sprintf( char *buffer, const char *format, [ argument] … );

    字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。

    printf是将一个格式化的字符串输出到屏幕。

    sprintf的第一个参数应该是目的字符串,如果不指定这个参数,执行过程中出现 "该程序产生非法操作,即将被关闭...."的提示。

    sprintf()会根据参数format 字符串来转换并格式化数据,然后将结果复制到参数str 所指的字符串数组,直到出现字符串结束('')为止。关于参数format 字符串的格式请参考printf()。

    【返回值】成功则返回参数str 字符串长度,失败则返回-1,错误原因存于errno 中。

    :C语言对数组进行操作时并不检测数组的长度,如果str的长度不够,sprintf()很容易造成缓冲区溢出,带来意想不到的后果,黑客经常利用这个弱点攻击看上去安全的系统。

    写入buffer的字符数是没有限制的,这就存在了可能buffer溢出

    %% 印出百分比符号,不转换。
    %c 整数转成对应的 ASCII 字元。
    %d 整数转成十进位。
    %f 倍精确度数字转成浮点数。
    %o 整数转成八进位。
    %s 整数转成字符串。
    %x 整数转成小写十六进位。
    %X 整数转成大写十六进位。
    int i=123456;
      char buffer [33];
      snprintf(buffer, sizeof(buffer), "%d", i);
      printf ("buffer: %s
    ",buffer);
    double i=123456.6526532;
      char buffer [33];
      snprintf(buffer, sizeof(buffer), "%020.9f", i);///默认6位 右对齐左补0;无lf之说
      printf ("buffer: %s
    ",buffer);

       #方法三:使用stringstream

    Input/output string stream classstringstream provides an interface to manipulate strings as if they were input/output streams.

        int a=123;
        double f=123.654;
        stringstream strStream;
        strStream<<a<<"---"<<f<<endl;
        cout<<strStream.str()<<endl;

    字符串转其他类型

     string类型转换为int, float, double类型 

    # 方法一: 使用stringstream

    ///模板函数:将string类型变量转换为常用的数值类型(此方法具有普遍适用性)
    template <class Type>
    Type stringToNum(const string& str)
    {
        istringstream iss(str);
        Type num;
        iss >> num;
        return num;
    }
    
    int main(int argc, char* argv[])
    {
        string str("00801.36522655");
        cout << stringToNum<double>(str) << endl;
    
        system("pause");
        return 0;
    }

      #方法二:使用atoi()、 atil() 、atof()函数  -----------------实际上是char类型向数值类型的转换

     string a="123.32565"; cout<<atof(a.c_str())<<endl;///默认三位 

     string a="1234567891002565687"; cout<<atoll(a.c_str())<<endl;///默认三位 

    温馨提示:ANSI C 规范定义了 stof()atoi()atol()strtod()strtol()strtoul() 共6个可以将字符串转换为数字的函数,大家可以对比学习。另外在 C99 / C++11 规范中又新增了5个函数,分别是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介绍,请大家自行学习。

    C/C++ string转大/小写

    #include "cstdio"
    #include "cstring"
    #include <iostream>
    #include <sstream>
    #include "cctype"
    #include "string"
    #include "algorithm"
    using namespace std;
    int main()
    {
        string s="123asdASD";
        transform(s.begin(), s.end(), s.begin(), ::toupper);
        cout<<s<<endl;
        transform(s.begin(),s.end(),s.begin(),::tolower);
        cout<<endl;
        
        char cs[]="asa221DDS";
        int i=-1;
        while(cs[i++])
        {
            cs[i]=toupper(cs[i]);
        }
        puts(cs);
    }
  • 相关阅读:
    写在我第一个虚幻程序之前
    C++学习笔记(十二):重载函数
    JavaScript兼容问题汇总[实时更新]
    Activity跳转时传递Bitmap对象的实现
    Http报头Accept与Content-Type的差别
    第0讲: 准备篇
    Android Design Support Library(二)用NavigationView实现抽屉菜单界面
    Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果
    Android Support Library 23.2用法简析
    Android Design Support Library初探,NavigationView实践
  • 原文地址:https://www.cnblogs.com/kimsimple/p/6804896.html
Copyright © 2020-2023  润新知