主題:
[閒聊]原來自己真的不懂...C/C++
[打印本頁]
發表人:
deep_dream
時間:
2009-10-27 11:38 PM
主題:
[閒聊]原來自己真的不懂...C/C++
等到真的上班了...
開始寫程式了...
才發現...
什麼?指標到底是搞什麼東西呀~~~
東指西指,亂指一堆我看不懂的東西...
指向字串的指標,其實就跟陣列一樣...
而陣列其實就是指標...
老師怎麼都沒說...很多書也沒說,雖然後來有的有說啦...
只是怎麼書上講的用法永遠都那麼簡單...事實上用根本不是這麼一回事...
怎麼可能永遠都是int * or char *
結構可以靠指標來傳...
甚至連函式都用指標來傳...
真是給它好用過頭的指標,我無言了...
覺得自己真的嫩到不行...
一切的重點都是在記憶體呀...
char *str = "C Programing is the best pl";
string s(str);
難到沒有更好的方法讓我使用string的函式卻不必複製記憶體呀~~~
想要使用 string::compare or string::find 等函式,偏偏原資料就是char *
天那~~~
發表人:
oislone
時間:
2009-10-28 03:11 AM
char * 是 指標~
string 是類別吧~~
不一樣的東西~
char * 應該可以用 strcmp() 或者 memcmp() 來代替
還有 strchr 及 memchr 來代替~
發表人:
RJ
時間:
2009-10-28 03:56 AM
引用:
deep_dream
寫到:
難到沒有更好的方法讓我使用string的函式卻不必複製記憶體呀~~~
想要使用 string::compare or string::find 等函式,偏偏原資料就是char *
天那~~~
你用string的function不如copy char*的內容到string再做處理吧...或是利用強制轉換之類的處理過後再丟到目標去
string:c_str()
很好用...有機會你自己去MSDN研究
範例...大概像這樣吧
char* ch1 = "aabbab";
ch1 = static_cast<string>(ch1).substr(static_cast<string>(ch1).find("aa"),3).c_str();
如果你需要的只是不需要另外宣告一個string變數就能使用string的function的話,那像這樣強制轉換後處理應該符合你需求
說穿了"string"這個類別也只是基於"char *"之外再增加一些字串處理function而已,可以直接強制轉換
說實在的,老師都不會交這些東西,因為老師們認為那是你應該要會的
正所謂"師父帶進門,修行看個人"
這些雖然課堂不教,但是老師出的作業多少都是磨練這些技能
不過你一開始說的指標陣列應該基本上都是會教的...只是說看老師是大略帶過還是仔細講解而已
[RJ 在 2009-10-28 04:06 AM 作了最後編輯]
發表人:
deep_dream
時間:
2009-10-28 09:55 AM
我的確是有用到c_str(),但是那是讓char去讀string的字串。
因為我想要在一長串的字串中找某特定「字串」,而非並是「字元」
所以我才會需要把char x[] or char *x 轉成string類別
strchr or strrchr好像都是找單一字元,所以讓我很困擾~
而且因為資料量進來的時候非常之大,大概3分鐘就2GB~~~
所以我必須僅可能的不要使用copy的方式來處理資料
所以很痛苦~~~
我本來也沒用String,所以常常會用到memcmp、strtok、stcpn但就是覺得不好用呀~~~
我就是想在一長串的資料中找特定字串呀~~~QQ
發表人:
oislone
時間:
2009-10-28 07:38 PM
那就用 strstr() 就可以了吧~
發表人:
Ailio
時間:
2009-10-29 01:09 PM
其實很多東西都這樣吧
真正上去用 才發現 學校學的 跟 實際用的 搭不上邊
不過程式這種東西 只要腦袋轉的過 邏輯不要差
剩的就是磨練而已 熟能生巧
C/C++ 也非我的領域 就不獻醜了
發表人:
海狼
時間:
2009-12-17 09:38 PM
目前我正在用linux的系統程式
這也讓我有種...學的很少的感覺
code裡面會用到C++ & linux
外加上FLTK這種UI
底層用C 有時要看
除了這個
還有CHIP原本提供的函數...
關鍵字多到...不知道到要去哪裡查
歡迎光臨 TWed2k (http://twed2k.org/)
Powered by Discuz! 4.1.0