将数字转换成字符串用to_string(),返回一个字符串 如:s = to_string(i);
将字符串转换成数字用stoi(字符串,0,进制);返回一个数字:num=stoi(str,0,8);
	stoi() 会对转化后的数进行检查,判断是否会超出 int 范围,如果超出范围就会报错;
atoi() 不会对转化后的数进行检查,超出上界,输出上界,超出下界,输出下界; 
	 
 
std::string str_dec = "2001, A Space Odyssey";
  std::string str_hex = "40c3";
  std::string str_bin = "-10010110001";
  std::string str_auto = "0x7f";
  std::string::size_type sz;   // alias of size_t
  int i_dec = std::stoi (str_dec,&sz);
  int i_hex = std::stoi (str_hex,nullptr,16);
  int i_bin = std::stoi (str_bin,nullptr,2);
  int i_auto = std::stoi (str_auto,nullptr,0);
  std::cout << str_dec << ": " << i_dec << " and [" << str_dec.substr(sz) << "]\n";
  std::cout << str_hex << ": " << i_hex << '\n';
  std::cout << str_bin << ": " << i_bin << '\n';
  std::cout << str_auto << ": " << i_auto << '\n';
 
 
/* atoi example */
#include <stdio.h>      /* printf, fgets */
#include <stdlib.h>     /* atoi */
int main ()
{
  int i;
  char buffer[256];
  printf ("Enter a number: ");
  fgets (buffer, 256, stdin);
  i = atoi (buffer);
  printf ("The value entered is %d. Its double is %d.\n",i,i*2);
  return 0;
	
		
			
				const char *c_str();
			
			
				c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.
			
			
				这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。
			
			
				注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针
			
			
				比如:最好不要这样:
			
			
				char* c;
			
			
				string s="1234";
			
			
				c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理
			
			
				应该这样用:
			
			
				char c[20];
			
			
				string s="1234";
			
			
				strcpy(c,s.c_str());
			
			
				这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作
			
			
				再举个例子
			
			
				c_str() 以 char* 形式传回 string 内含字符串
			
			
				如果一个函数要求char*参数,可以使用c_str()方法:
			
			
				string s = "Hello World!";
			
			
				printf("%s", s.c_str()); //输出 "Hello World!"
			
		
	
const char *c_str();
c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.
这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。
注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针
比如:最好不要这样:
char* c;
string s="1234";
c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理
应该这样用:
char c[20];
string s="1234";
strcpy(c,s.c_str());
这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作
再举个例子
c_str() 以 char* 形式传回 string 内含字符串
如果一个函数要求char*参数,可以使用c_str()方法:
string s = "Hello World!";
printf("%s", s.c_str()); //输出 "Hello World!"



 京公网安备 11010502036488号
京公网安备 11010502036488号