c_str 以及atoi
生活随笔
收集整理的這篇文章主要介紹了
c_str 以及atoi
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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!"
#include <stdio.h>
#include <stdlib.h>
int atoi(char *str)
{
????????int value = 0;
????????while(*str>='0' && *str<='9')
????????{
????????????????value *= 10;
????????????????value += *str - '0';
????????????????str++;
????????}
????????return value;
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!"
#include <stdio.h>
#include <stdlib.h>
int atoi(char *str)
{
????????int value = 0;
????????while(*str>='0' && *str<='9')
????????{
????????????????value *= 10;
????????????????value += *str - '0';
????????????????str++;
????????}
????????return value;
}
轉載于:https://www.cnblogs.com/DjangoBlog/p/4618023.html
總結
以上是生活随笔為你收集整理的c_str 以及atoi的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python之re模块 —— 正则表达式
- 下一篇: BZOJ 1867 [Noi1999]钉