zoukankan      html  css  js  c++  java
  • 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码值
    
  • 相关阅读:
    计算机网络学习资料
    操作系统学习资料
    2020 Multi-University Training Contest 6 1005 Fragrant numbers(区间dp)
    2020 Multi-University Training Contest 6 1010 Expectation(矩阵树定理)
    2020 Multi-University Training Contest 4 1012 Last Problem(01背包)
    2020 Multi-University Training Contest 4 1012 Last Problem(构造)
    2020 Multi-University Training Contest 4 1007 Go Running(网络流)
    2020 Multi-University Training Contest 3 1006 X Number
    静态网页开发基础
    包装类
  • 原文地址:https://www.cnblogs.com/GeekDanny/p/10992932.html
Copyright © 2011-2022 走看看