如何把std string當char 使用

2021-05-21 22:18:02 字數 756 閱讀 6013

std::string使用很方便,但有時會碰到這樣的問題,比如我們有乙個結構體,內容如下所示:

typedef struct _datainfo

int i;

unsigned time;

} datainfo;

datainfo stinfo;

stinfo.i = 10;

stinfo.time = time(null);

如果要把這個結構體的內容儲存到乙個string,通常的作法是什麼呢?

char buf[512];

string strdata;

memcpy(char*(buf), (char *)&stinfo, sizeof(stinfo));

strdata = string((char *)buf);

其實我們忽略了一點,就是string也是用char *來儲存資料內容的,而c_str()介面就返回了這個頭指標。與普通的字串不同的是,它的長度並不是以/0結尾去判斷的,而是通過成員變數裡的size決定的,知道了這一樣,我們就可以把string當char *來使用了。

string strdata;

strdata.resize(sizeof(stinfo));

memcpy((char *)strdata.c_str(), (char *)&stinfo, sizeof(stinfo));

這樣就可以實現了,知道了這一點,我們就可以用string幹更多的事情,要注意的就是在每次內容修改之前,要進行resize成新的大小。

如何把方法 函式 當引數傳遞

方法的引數一般是變數,但在某些情況下需要這個引數是另乙個方法,這時就可以參考下面這段 了。這個例子也很好的說明了委託在實際工作中的應用,片段 於 c 高階程式設計第6版 隨書的示例 示例 1using system 23 namespace wrox.procsharp.delegates411 1...

把歲月當行李 把往事當垃圾 四

在程式設計師雜誌社出的 開發高手 2004年10月下半月這一期上,看到了兩篇關於大學這幾年的文章,看完之後,心裡頗有觸動,最受刺激的,當是曾毅寫的那篇文章.我想任何乙個剛從學校出來,或者不能忘情大學那幾年的程式設計師,看到那篇文章可能都很受刺激.關於曾毅,以前略知他是mvp,關於mvp的爭議話題,且...

把錯誤當經驗

世界上只有兩種人不犯錯誤,一是什麼事也不做的人,二是死人。金無足赤,人無完人是世人皆知的真理。在人生歷程中面對錯誤,如何管理呢?人人都會犯錯誤 被中國人認為 智慧型的化身 的諸葛亮也犯過不少錯誤,最大的錯誤是世人皆知的錯用馬謖。馬謖驕傲自大,剛愎自用,聽不得不同意見,容不得人,但諸葛亮相信他,讓他駐...