• C++string,char* 字符数组,int类型之间的转换


    string、int 常见类型之间相互转换

    int & string 之间的转换

    • C++中更多的是使用流对象来实现类型转换

    针对流对象 sstream实现

    int,float 类型都可以实现

    #include <sstream>
    //int convert to string
    void int2str(const int &int_temp,string &string_temp){
        stringstream s_stream;
        s_stream<<int_temp;
        string_temp=s_stream.str();
        //s_stream>>string_temp;  // 也可以实现
    }
    
    //string convert to int
    void str2int(const string &string_temp,int &int_temp){
        stringstream s_stream(string_temp);
        s_stream>>int_temp;  
    }
    
    • 其他的方法

    c_str()函数

    string.c_str() 可以将string字符串转换成一个指向与string相同字符数组的头指针

    // atoi
    void str2int(string &string_temp,int &int_temp){
        int_temp=atoi(string_temp.c_str());
    }
    
    // stoi实现
    void str2int_stoi_version(string& string_temp,int &int_temp){
        int_temp=stoi(string_temp);
    }
    

    字符数组char* 与string之间的转换

    • 字符数组转为string
    char ch [] = "ABCDEFGHIJKL";
    string str(ch);//也可string str = ch;
    
    // other way
    
    char ch [] = "ABCDEFGHIJKL";
    string str;
    str = ch;//在原有基础上添加可以用str += ch;
    
    • string转为字符数组
    char buf[8];
    string str("ABCDEFG");
    length = str.copy(buf,8);     //str.copy() return number of character copied
    buf[length] = '';   //末尾置0
    
    
    char buf[8];
    string str("ABCDEFG");
    strcpy(buf, str.c_str());//strncpy(buf, str.c_str(), 8);
    

    strcpy()函数

    //char* strcpy( char* dest, const char* src );
    #include <iostream>
    #include <cstring>
    #include <memory>
    int main()
    {
        const char* src = "Take the test.";
    //  src[0] = 'M'; // can't modify string literal
        auto dst = std::make_unique<char[]>(std::strlen(src)+1); // +1 for the null terminator
        std::strcpy(dst.get(), src);
        dst[0] = 'M';
        std::cout << src << '
    ' << dst.get() << '
    ';
    }
    // Take the test.
    // Make the test.
    

    strncpy()函数

    // char *strncpy( char *dest, const char *src, std::size_t count );
    
    #include <iostream>
    #include <cstring>
    int main()
    {
        const char* src = "hi";
        char dest[6] = {'a', 'b', 'c', 'd', 'e', 'f'};
        std::strncpy(dest, src, 5);
     
        std::cout << "The contents of dest are: ";
        for (char c : dest) {
            if (c) {
                std::cout << c << ' ';
            } else {
                std::cout << "\0" << ' ';
            }
        }
        std::cout << '
    ';
    }
    //The contents of dest are: h i    f
    

    int 和 char

    int a=1;
    char c=a+'0'; //c的值就是'1'的ASCII码值
    
  • 相关阅读:
    国内免费网络硬盘个人汇总
    SQL Server 2008 R2 (MS官方全版本),AIO,含x86和x64
    宣称支持REST的Web框架到底有多REST?
    flex(flash)下的pdf处理组件
    Visual Studio 2010 Pro Power Tools给VS2010的UI进行重大升级
    对XML里的属性或元素进行模糊搜索的方法
    Expression Blend 4 SP1现在可以支持Flash UI组件
    可选参数在.NET中全面开花
    Flex与JS交互完全攻略
    Flash Builder 4.0.1更新放出.同步更新框架为Flex SDK 4.1!支持最新的AIR 2正式版和Flash Player 10.1![图文]
  • 原文地址:https://www.cnblogs.com/GeekDanny/p/10992932.html
Copyright © 2020-2023  润新知