C++中字符串和数字相互转化实现
程序员文章站
2022-06-24 20:22:50
在刷一些题目的时候,总是会碰到字符串和数字进行转化的问题,今天我们就在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中的
(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。
上一篇: C++跨文件共享全局变量
下一篇: for循环控制的意义(代码实例)