CSDN博客

img ArduousBonze

int double std:string之间的互转

发表于2008/9/28 11:29:00  20401人阅读

分类: C++探究

 

如何将int,double转std::string? (C/C++) (template)

std::string为library type,而int、double为built-in type,两者无法互转,这里使用function template的方式将int转std::string,将double转std:string。

 1/* 
 2(C) OOMusou 2006 http://oomusou.cnblogs.com
 3
 4Filename    : ArrayToVectorByConstructor.cpp
 5Compiler    : Visual C++ 8.0
 6Description : Demo how to convert any type to string.
 7Release     : 11/18/2006
 8*/

 9#include <iostream>
10#include <sstream>
11#include <string>
12
13template <class T> 
14std::string ConvertToString(T);
15
16int main() {
17  std::string s;
18
19  // Convert int to std::string
20  int i = 123;
21  s = ConvertToString(i);
22  std::cout << s << std::endl;
23
24  // Convert double to std::string
25  double d = 123.123
26  s = ConvertToString(d);
27  std::cout << s << std::endl;
28
29  return 0;
30}

31
32template <class T> 
33std::string ConvertToString(T value) {
34  std::stringstream ss;
35  ss << value;
36  return ss.str();
37}

如何将std::string转int,double? (C/C++) (C) (template)


Abstract
std::string为library type,而int、double为built-in type,两者无法利用(int)或(double)的方式互转,本文提出轉換的方式。

Introduction
使用環境:Visual C++ 9.0 / Visual Studio 2008

Method 1:
使用C的atoi()與atof()。

先利用c_str()轉成C string,再用atoi()與atof()。

string_to_double.cpp / C++

1 /* 
2 (C) OOMusou 2008 http://oomusou.cnblogs.com
3 
4 Filename    : string_to_double.cpp
5 Compiler    : Visual C++ 9.0 / Visual Studio 2008
6 Description : Demo how to convert string to int (double)
7 Release     : 08/01/2008 1.0
8 */
9 
10 #include <iostream>
11 #include <string>
12 #include <cstdlib>
13 
14 using namespace std;
15 
16 int main() {
17   string s = "123";
18   double n = atof(s.c_str());
19   //int n = atoi(s.c_str());
20  
21   cout << n << endl;
22 }


Method 2:
利用stringstream

这里使用functon template的方式将std::string转int、std::string转double。

stringstream_to_double.cpp / C++

1/* 
2(C) OOMusou 2006 http://oomusou.cnblogs.com
3
4Filename    : stringstream_to_double.cpp
5Compiler    : Visual C++ 8.0
6Description : Demo how to convert string to any type.
7Release     : 11/18/2006
8*/

9#include <iostream>
10#include <sstream>
11#include <string>
12
13template <class T> 
14void convertFromString(T &, const std::string &);
15
16int main() {
17  std::string s("123");
18
19  // Convert std::string to int
20  int i = 0;
21  convertFromString(i,s);
22  std::cout << i << std::endl;
23
24  // Convert std::string to double
25  double d = 0;
26  convertFromString(d,s);
27  std::cout << d << std::endl;
28
29  return 0;
30}

31
32template <class T> 
33void convertFromString(T &value, const std::string &s) {
34  std::stringstream ss(s);
35  ss >> value;
36}

如何將int轉string? (C/C++) (C)


C/C++並沒有提供內建的int轉string函數,這裡提供幾個方式達到這個需求。

1.若用C語言,且想將int轉char *,可用sprintf(),sprintf()可用類似printf()參數轉型。

 1/* 
 2(C) OOMusou 2007 http://oomusou.cnblogs.com
 3
 4Filename    : int2str_sprintf.cpp
 5Compiler    : Visual C++ 8.0 / ANSI C
 6Description : Demo the how to convert int to const char *
 7Release     : 01/06/2007 1.0
 8*/

 9#include "stdio.h"
10
11void int2str(int , char *);
12
13int main() {
14  int i = 123;
15  char s[64];
16  int2str(i, s);
17  puts(s);
18}

19
20void int2str(int i, char *s) {
21  sprintf(s,"%d",i);
22}


2.若用C語言,還有另外一個寫法,使用_itoa(),Microsoft將這個function擴充成好幾個版本,可參考MSDN Library。

 1/* 
 2(C) OOMusou 2007 http://oomusou.cnblogs.com
 3
 4Filename    : int2str_itoa.cpp
 5Compiler    : Visual C++ 8.0 / ANSI C
 6Description : Demo the how to convert int to const char *
 7Release     : 01/06/2007 1.0
 8*/

 9#include "stdio.h"  // puts()
10#include "stdlib.h" // _itoa()
11
12void int2str(int , char *);
13
14int main() {
15  int i = 123;
16  char s[64];
17  int2str(i, s);
18  puts(s);
19}

20
21void int2str(int i, char *s) {
22  _itoa(i, s, 10);
23}


3.若用C++,stringstream是個很好用的東西,stringstream無論是<<或>>,都會自動轉型,要做各型別間的轉換,stringstream是個很好的媒介。

 1/* 
 2(C) OOMusou 2007 http://oomusou.cnblogs.com
 3
 4Filename    : int2str_sstream.cpp
 5Compiler    : Visual C++ 8.0 / ISO C++
 6Description : Demo the how to convert int to string
 7Release     : 01/06/2007 1.0
 8*/

 9
10#include <iostream>
11#include <string>
12#include <sstream>
13
14using namespace std;
15
16string int2str(int &);
17
18int main(void{
19  int i = 123;
20  string s;
21  s = int2str(i);
22
23  cout << s << endl;
24}

25
26string int2str(int &i) {
27  string s;
28  stringstream ss(s);
29  ss << i;
30
31  return ss.str();
32}

4.若用C++,據稱boost有更好的方法,不過我還沒有裝boost,所以無從測試

0 0

相关博文

我的热门文章

img
取 消
img