上代碼:
// test1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
//#include <vector>
#include <sstream>
using namespace std;
int main(){
//string to int
string str = "12345678";
int number;
number = atoi(str.c_str());
cout<<number;
//int to string
//需要調用到sstream
int hello=4;
stringstream ss;
ss<<hello;
string s=ss.str();
//調用string的方法
cout<<s.c_str()<<endl;
}
代碼中調用了string的 c_str() 方法,具體如下:
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!" 。
string 轉化為char * c_str()
void main() {
string word = " 5566" ;
char letter[50];
strcpy(letter,word.c_str());
}