当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C++中字符串和数字相互转化实现

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

2018年04月10日  | 移动技术网IT编程  | 我要评论

在刷一些题目的时候,总是会碰到字符串和数字进行转化的问题,今天我们就在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。
 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网