欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++中字符串和数字相互转化实现

程序员文章站 2022-04-12 21:14:30
在刷一些题目的时候,总是会碰到字符串和数字进行转化的问题,今天我们就在C++中来用多种方法实现。示例代码上传至 https://github.com/chenyufeng1991/...

在刷一些题目的时候,总是会碰到字符串和数字进行转化的问题,今天我们就在C++中来用多种方法实现。示例代码上传至 https://github.com/chenyufeng1991/TransferStringAndInt。

(1)string -> char *

// string -> char *
    string str3 = "chenyufeng";
    const char *str3ToChar;
    str3ToChar = str3.c_str();
在C++中字符串我们常用STL中的, 而在C语言中我们常用的是字符数组。直接使用string.c_str()即可完成把string转化为char *;

(2)char * -> string

// char * -> string
    char *str4 = "yufeng";
    string str5(str4);
    cout << str5 << endl;
直接使用string中的构造函数即可完成使用char *初始化string的操作。


(3)使用ostringstream把数字转化为string

// 可以使用ostringstream把int型输入到流中,然后转化为字符串;
    ostringstream os; // 字符串输出流
    int i = 123;
    os << "Hello" << i;
    cout << os.str() << endl;

    os << i;
    cout << os.str() << endl;

    os << "World";
    cout << os.str() << endl;
ostringstream其实是字符串的输出流,可以不断的在流中插入数据。然后调用ostringstream中的str()方法全部把流中的数据转化为string。

(4)使用istringstream把字符串转化为数字

// 用istringstream对象读一个字符串
    istringstream is; // 字符串输入流
    is.str("567");
    int j;
    is >> j;
    cout << j << endl;



(5)atoi:库函数,char *转化为int

// string-->int
    // 注意:atoi()里面只能传递const char类型,所以需要把string转化为const char
    string str = "789";
    int str2int = atoi(str.c_str());
    cout << str2int << endl;
注意atoi中的参数传递的是char *,而不是string。

(6)sprintf: int 转化为char *

 // int-->srting,Xcode中不能使用itoa这个函数,因为这个函数没有定义在标准C++里,但是在有些编译器里可以使用,所以这里推荐使用sprintf
    char eeeee[10];
    sprintf(eeeee,"%d",444);
    cout << string(eeeee) << endl;

注意sprintf的第一个参数要传递的是字符数组或者字符指针。第二个参数是格式化,“%d”表示int。

其实这里最方便的是使用itoa,可以直接进行int和char *的转化,由于我使用的是Xcode进行编程,在Xcode中不能使用itoa这个函数,因为itoa这个函数没有包括在C++的标准库中。所以我这里只能使用sprintf了。大家可以去尝试一下itoa。