1. 程式人生 > >C++中數字與字串之間的轉換(包括C++11新標準和寬窄字元轉換)

C++中數字與字串之間的轉換(包括C++11新標準和寬窄字元轉換)

1、字串數字之間的轉換

(1)string --> char *
   string str("OK");
   char * p = str.c_str();

(2)char * -->string
   char *p = "OK";
   string str(p);

(3)char * -->CString 
   char *p ="OK";
   CString m_Str(p);
   //或者
   CString m_Str;
   m_Str.Format("%s",p);

(4)CString --> char *
   CString str("OK");
   char * p = str.GetBuffer(0);
   ...
   str.ReleaseBuffer();

(5)string --> CString  
   CString.Format("%s", string.c_str());  

(6)CString --> string
   string s(CString.GetBuffer(0));  
   GetBuffer()後一定要ReleaseBuffer(),否則就沒有釋放緩衝區所佔的空間,CString物件不能動態增長了。

(7)double/float->CString
   double data;
   CString.Format("%.2f",data); //保留2位小數

(8)CString->double
   CString s="123.12";
   double   d=atof(s);   
 
(9)string->double
  double d=atof(s.c_str());

2、數字轉字串:使用sprintf()函式



char str[10];
int a=1234321;
sprintf(str,"%d",a);
--------------------
char str[10];
double a=123.321;
sprintf(str,"%.3lf",a);
--------------------
char str[10];
int a=175;
sprintf(str,"%x",a);//10進位制轉換成16進位制,如果輸出大寫的字母是sprintf(str,"%X",a)
--------------------
char *itoa(int value, char* string, int radix); 
同樣也可以將數字轉字串,不過itoa()這個函式是平臺相關的(不是標準裡的),故在這裡不推薦使用這個函式。

3、字串轉數字:使用sscanf()函式


char str[]="1234321";
int a;
sscanf(str,"%d",&a);
.............
char str[]="123.321";
double a;
sscanf(str,"%lf",&a);
.............
char str[]="AF";
int a;
sscanf(str,"%x",&a); //16進位制轉換成10進位制

另外也可以使用atoi(),atol(),atof().

4、使用stringstream類

用ostringstream物件寫一個字串,類似於sprintf() 
  ostringstream s1;
  int i = 22;
  s1 << "Hello " << i << endl;
  string s2 = s1.str();
  cout << s2;

用istringstream物件讀一個字串,類似於sscanf() 
  istringstream stream1;
  string string1 = "25";
  stream1.str(string1);
  int i;
  stream1 >> i;
  cout << i << endl;  // displays 25

5、C++11新標準和寬窄字元轉換

string和數值型別轉換

    c++11提供了to_string方法,可以方便的將各種數值型別轉換為 字串型別:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 std::string to_string(int value); std::string to_string(long int value); std::string to_string(long long int value); std::string to_string(unsigned int value); std::string to_string(unsigned long long int value); std::string to_string(float value); std::string to_string(double value); std::wstring to_wstring(int value); std::wstring to_wstring(long int value); std::wstring to_wstring(long long int value); std::wstring to_wstring(unsigned int value); std::wstring to_wstring(unsigned long long int value); std::wstring to_wstring(float value); std::wstring to_wstring(double value);

    還提供了stoxxx方法,將string轉換為各種型別的資料:

1 2 3 4 std::string str = "1000"; int val = std::stoi(str); long val = std::stol(str); float val = std::stof(str);

    c++11還提供了字串(char*)轉換為整數和浮點型別的方法:

1 2 3 4 atoi: 將字串轉換為 int atol: 將字串轉換為long atoll:將字串轉換為 long long atof: 將字串轉換為浮點數

寬窄字元轉換

    c++11增加了unicode字面量的支援,可以通過L來定義寬字元 
std::wstring wide_str = L"中國人"; //定義了寬字元字串 
    將寬字元轉換為窄字元需要用到condecvt庫中的std::wstring_convert。 
    std::wstring_convert使std::string和std::wstring之間的相互轉換變得很方便,如程式碼:

1 2 3 4 5 6 7 8 9 10 std::wstring wide_str = L"中國人"; std::wstring_convert<std::codecvt<wchar_t, char, std::mbstate_t>> converter(new std::codecvt<wchar_t, char, std::mbstate_t>("CHS")); std::string narrow_str = converter.to_bytes(wide_str); std::wstring wstr = converter.from_bytes(narrow_str); std::cout << narrow_str << std::endl; wcout.imbue(std::locale("chs")); std::wcout << wstr << std::endl;

相關推薦

C++數字字串之間轉換(包括C++11標準寬窄字元轉換)

1、字串數字之間的轉換 (1)string --> char *    string str("OK");    char * p = str.c_str(); (2)char * -->string    char *p = "OK";    string str(p); (3)char *

C++數字字串之間轉換

字串數字之間的轉換 (1)string --> char * string str("OK"); char * p = str.c_str(); (2)char * -->string char *p = "OK";

C++數字字串轉換

1、字串數字之間的轉換(1)string --> char *   string str("OK");   char * p = str.c_str();(2)char * -->string   char *p = "OK";   string str(p);

c++ char string 之間的相互轉換

第一部分: 將  char *    或者    char []   轉換為  string 可以直接賦值,轉換。       第二部分: 將  &n

c++ char string 之間的相互轉換問題

第一部分: 將  char *    或者    char []   轉換為  string 可以直接賦值,轉換。       第二部分: 將  &n

javaunicode字串之間的互相轉換

字串與unicode之間的互相轉換/*** 字串轉換unicode*/public static String string2Unicode(String string) { StringBuffer unicode = new StringBuffer(); for (i

Qt數字字串之間的相互轉換

把QString轉換為 double型別 方法1.QString str="123.45"; double val=str.toDouble(); //val=123.45 方法2.很適合科學計數法形式轉換 bool ok; double d; d=QString("123

VC數字字串轉換方法

字串轉數字 1.CRT函式 ASCII UNICODE TCHAR VS2005 int atoi _wtoi _tstoi _ttoi _atoi_l _wtoi_l long atol _wtol _tstoi _t

ip地址在數字字串之間的相互轉換

       #include <sys/socket.h>        #include <netinet/in.h>        #include <arpa/inet.h>        int inet_aton(co

數字字串之間轉換

C語言為我們提供了數字和字串之間的轉換函式,這些函式有很多,常用的有: 整型數轉字串函式itoa(): <pre name="code" class="cpp"><span style="font-size:18px;">char *itoa(int

自寫函式實現數字字串之間的相互轉化,不使用itoa函式

一、自定義函式實現 思路:整數轉化為字串,可以採用加'0',然後再逆序,整數加'0'就會隱性轉化為char型別的數;       字串轉化為整數,可以採用減'0',再乘以10累加的方法,字串減'0'就會隱性的轉化為int型別的數。 <span style="fon

淺談c++之間的組合關係

一、首先我們要知道c++中類與類之間有哪些關係。1.繼承   繼承指的是一個類繼承另外的一個類,繼承的類叫做子類,被繼承的類叫做父類。語法形式為:class A{ }; class B:public A{ }; 其中A為父類,B為子類,public 是繼承方式,具體的內容不再

C/C++ASCIIUnicode字串相互轉換

轉載地址:https://blog.csdn.net/wbq2018/article/details/8806431 1、ASCII to Unicode 函式: wcstombs(VC6)、wcstombs_s 例項: //crt_wcstombs_s.c //This examp

在實際的開發工作,對字串的處理是最常見的程式設計任務。本題目即是要求程式對使用者輸入的串進行處理。具體規則如下: (1)把每個單詞的首字母變為大寫。 (2)把數字與字母之間用下劃線字元(_)分開,使得更

在實際的開發工作中,對字串的處理是最常見的程式設計任務。本題目即是要求程式對使用者輸入的串進行處理。具體規則如下: (1)把每個單詞的首字母變為大寫。 (2)把數字與字母之間用下劃線字元(_)分開,使得更清晰; (3)把單詞中間有多個空格的調整為1個空格。   &

C++數字字串的相互轉換

轉自https://blog.csdn.net/michaelhan3/article/details/75667066  首先推薦用用C++的stringstream。  主要原因是操作簡單。 數字轉字串,int float型別 同理 #include <st

C 語言---數字中文大寫數字之間轉換(實用)

#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i=0,count=0; //計數器 char

c++ 數字字串的相互轉換

首先推薦用用C++的stringstream。 主要原因是操作簡單。 數字轉字串,int float型別 同理 #include <string> #include <sstream> int main(){ double

Java16進位制字串之間的相互轉換

在Oracle中表之間關聯需要有包含有中文的字串轉換為16進位制,在網上找了下,比較纖細點的在原文連結程式碼樣例:package com.eastcom.two.oracle.hex; public class StrWithHexTransform { public

C#操作圖片BASE64之間的相互轉換適應於網頁不能引用路徑的情況

#region 圖片的Base64 /// <summary> /// 圖片的Base64轉換 /// </summary>

C++數字字符串的轉換

oat 不能 ring1 相關 輸出 displays tof spl 進制轉換 1、字符串數字之間的轉換(1)string --> char * string str("OK"); char * p = str.c_str();(2)char * -->