C字串的小問題

來源:互聯網
上載者:User

標籤:cpp

string與char *、char[]之間的轉換提示

string可以被看成是以字元為元素的一種容器。字元構成序列(字串)。有時候在字元序列中進行遍曆,標準的string類提供了STL容器介面。具有一些成員函數比如begin()、end(),迭代器可以根據他們進行定位。
與char 不同的是,string不一定以NULL(‘\0‘)結束。string長度可以根據length()得到,string可以根據下標訪問。所以,不能將string直接賦值給char 

string轉換成char *

string有2個函數可以將string直接轉換成const char *類型。
一個是.c_str(),一個是data成員函數。

string s1 = "abcdeg";const char *c_s1 = s1.c_str();const char *c_s2 = s1.data();

這種方法只能轉換成const char,如果去掉const編譯不能通過。
如果要轉換成char
,可以用string的一個成員函數copy實現。

string s1 = "abcdefg";char *c_s1;int len = s1.length();c_s1 = (char *)malloc((len+1)*sizeof(char));s1.copy(c_s1,len,0);
char *和char []轉換成string

這種方式可以直接賦值:

string s;char *p = "abcdegf";s = p;
字串操作――得到沒有路徑的檔案名稱的小程式

給定一個檔案的絕對路徑,得到沒有路徑目錄的檔案名稱
主要思路是定義一個指向該字串的char指標p,遍曆整個字串,當遇到‘/‘或‘\‘的時候用filename_withoutpath指標變數記錄下位置,直到遍曆完整個字串,輸出的filename_withoutpath所指向的首地址就是檔案名稱的起始位置。

char* filename_withoutpath = NULL;char* p = NULL;p = filename_withoutpath = filename_absolutepath;while ((*p) != '\0'){    if (((*p)=='/') || ((*p)=='\\'))        filename_withoutpath = p+1;    p++;}\\filename_withoutpath指向的位置就是檔案名稱的首地址\\如果要得到該檔案所在的路徑的話,可以:\\*filename_withoutpath = '/0';\\則filename_absolutepath即得到該檔案的路徑

轉載請註明作者Jason Ding及其出處
Github部落客頁(http://jasonding1354.github.io/)
CSDN部落格(http://blog.csdn.net/jasonding1354)
簡書首頁(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)

C字串的小問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.