1. 程式人生 > >C語言將字串轉為整數

C語言將字串轉為整數

1、C語言有atoi、atol、atof等庫函式,可分別把ASCII編碼的字串轉化為int、long、float型別的數字。需要注意的是,這個幾個函式是C語言提供的擴充套件功能,並不是標準的函式,必須引入標頭檔案# include <stdlib. h>;若需要移植性,請用sscanf函式。

例如:int num=atoi(“12345”);//字串”12345”轉換為數字12345,並存入num變數中

2、sscanf函式。
sscanf函式是C語言中從一個字串中讀進與指定格式相符的資料的函式。sscanf與scanf類似,都是用於輸入的,只是後者以螢幕(stdin)為輸入源,前者以固定字串為輸入源。使用sscanf函式可以實現字串到任意資料型別的轉換。

例如:char s[]=”12345”;
int n;
sscanf(s,”%d”,&n);//把字串s轉換為整形資料並存入變數n中

3、字串數字之間的轉換

(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
//c_str函式的返回值是const char*的,atof不能直接賦值給char*,所以就需要我們進行相應的操作轉化,下面就是這一轉化過程
  double d=atof(s.c_str());  

4、數字轉字串:使用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進位制

char itoa(int value, char string, int radix);

同樣也可以將數字轉字串,不過itoa()這個函式是平臺相關的(不是標準裡的),故在這裡不推薦使用這個函式。

4、使用stringstream類,必須使用#include<sstream>

用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

相關推薦

C語言字串轉為整數

1、C語言有atoi、atol、atof等庫函式,可分別把ASCII編碼的字串轉化為int、long、float型別的數字。需要注意的是,這個幾個函式是C語言提供的擴充套件功能,並不是標準的函式,必須引入標頭檔案# include <stdlib. h&g

C語言一個正整數分解質因數程式碼及解析

將一個正整數分解質因數。例如:輸入888,打印出888=2*2*2*3*37。程式分析:對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成: 如果這個質數恰等於n,則說明分解質因數的過程已經結束,打印出即可。 如果n>k,但n能被k整除,則應打印出k的值,並用n除以k的商,作為

C語言字串轉json

示例程式碼: #include <stdio.h> #include <string.h> #include <stdlib.h> char *strrpc(char *str,char *oldstr,char *newstr){ /*

C語言字串轉換成對應的數字(十進位制、十六進位制)

問題1:講一個十進位制數字的字串表示轉換成對應的整數。舉例:將“1234”轉換成整數1234./*將字串s轉換成相應的整數*/ int atoi(char s[]) { int i = 0; int n = 0; for (i =

C語言字串整數的相互轉換

C語言提供了幾個標準庫函式,可以將任意型別(整型、長整型、浮點型等)的數字轉換為字串,下面列舉了各函式的方法及其說明。 # include <stdlib.h> 將數字轉換為字串   ● itoa():將整型值轉換為字串。   ● ltoa():將長整

C語言 字串反序輸出

#include <stdio.h> #include <string.h> void rev(char *buf, int size) { int i = 0; int temp; fo

c語言實現整數轉為字串字串轉為整數

整數轉為字串:數字+‘0’=相應字元 /***********************************************整數轉為字串**********************************************/ #inclu

C語言 十六進制字符串轉為十六進制數 (二進制、十進制都適用)

include 字符串 %d style pre 指針 main 8進制 16進制 主要利用 long int strtol(const char *nptr,char **endptr,int base); 函數 函數說明:    參數base範圍從2至36,或0。參數b

[流暢的 C]C語言結構體轉化為字串

[流暢的 C] C語言將結構體轉化為字串 Overview 思路 直接使用 memcpy 之類的是不可以的。所以最好的做法就是定義結構體的時候就實現對字串的轉換。 就像 Python 的 __str__ 一樣。 (不好意思,博主雷打不動轉python!信仰

C語言十進位制整數輸出為八進位制和十六進位制

方法一: 直接使用控制字串 %o 八進位制 %x %X 十六進位制 方法二: 函式 char *itoa(int value, char *string, int radix)    返回值型別

C語言10進位制轉為2進位制

第一種方法: #include<stdio.h> void dectobin(int n); int main() { int x=0; scanf("%d",&x);//只能正數 dectobin(x); pri

C語言字符串轉換成對應的數字(十進制、十六進制)【轉】

字符串表 .com 表示 == 還需要 ref lower href tar 轉自:http://wawlian.iteye.com/blog/1315133 問題1:講一個十進制數字的字符串表示轉換成對應的整數。舉例:將“1234”轉換成整

C語言】輸入一個整數,求它的原碼,反碼,補碼值

補碼 while src info idt IV com scan -- 1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int m,n,a[10],i=0,y[

C語言小結--求一個整數中bit位為1的個數

最近開發需要將一個數據做奇偶校驗,首先就是要計算出這個資料中bit位為1的個數,有以下幾種演算法可以達到要求: 1 方法1 我直接上程式碼,然後分析。 uint16_t get_one_in_data_1(uint16_t data) { uint16_t n = 0

c語言 一個數組中的奇數和偶數分開放在一起

       在一個數組中的元素大多奇數和偶數是混在一起的,而將陣列中元素奇數和偶數分開存放則是我們要解決的問題。        將奇數和偶數分開存放然後打印出來的思路是先建立兩個空間,將奇數和偶數分別存放起來,然後

C語言字串處理自定義函式

1、字串求長度 #include <stdio.h> int Mystrlen1(const char *str) { int i=0; while(*(str++)!='\0') { i++; } return i; } int Mystrlen2(cons

C語言實現字串英文字母大小寫的轉換

題目: 輸入一串字串,將其中的大寫字母換成小寫,小寫字母換成大寫輸出。例如輸入abcdefghijklmnopq,輸出ABCDEFGHIJKLMNOPQ 思路: 大寫字母轉換為小寫字母+32,小寫字母轉換為大寫字母-32;可以用for迴圈+陣列形式完成,也可利用while迴圈完成,我選擇了更容易理解的w

詳解C語言字串的指定位置插入字元

問題分析 在字串S的所有數字字元前加一個$字元,可以有兩種實現方法。方法一:用串S拷貝出另一個串T,對串T從頭至尾掃描,對非數字字元原樣寫入串S,對於數字字元先寫一個$符號再寫該數字字元,最後,在S串尾加結束標誌。使用此方法是犧牲空間,贏得時間。方法二:對串S從頭至尾掃描,當遇到數字字元時,從該字元至串

C語言-演算法-字串

字串操作 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> //字串移位包含問題,比如AABCD前兩位AA移到尾部後BCDAA包含CDA

c語言 記憶體中資料以二進位制形式寫入檔案 檔案中的資料表現形式

最近有在寫關於將記憶體中的資料寫入檔案的程式,當程式執行後,卻發現檔案中的位元組資料有些難以理解。思考後發現了其中的道理。 程式碼如下: #include<stdio.h> #include<stdlib.h> struct BlockInfo { bool is