【C++】字串char string stringstream 相關用法總整理(內含範例 ...

文章推薦指數: 80 %
投票人數:10人

【C++】C/C++ 字串Char String stringstream 相關用法總整理此文章中會整理char array, String, stringstream, c prinf 家族:printf, fprintf, ... 跳至主要內容 Noresults 關於本站關於本站關於站長隱私權政策PrivacyPolicy作品集得獎作品競賽作品個人作品演講ppt11th鐵人賽–《Googlemachinelearning學習筆記》12th鐵人賽–【錢不夠買ps的我,只好用OpenCV來修圖了!】13th鐵人賽–【今年還是不夠錢買psQQ,不如我們用PyQt自己寫一個】PythonPython基礎用法Python字串處理Python檔案處理Python系統偵測Python平行運算Python測試程式PythonLeetCodeBFS(拓樸排序)BFS(最短路徑)BFS(連通圖搜索)BinarySerachDFS(BST)DFS(TreeBasic)DFS(全部方案)DFS(圖)DFS(排列permutation)DFS(組合combination)DP(座標型–一維)DP(座標型–二維)DP(記憶化搜索memoization)HashTableIntervalLinkedListStackQueueTwopointers(Npointersmerge多項合併)Twopointers(同向雙指針→→)/SlidingwindowTwopointers(同向雙指針→→)/slow,fast(快慢雙指針)Twopointers(相向雙指針→←)/start,end(頭尾雙指針)Twopointers(背向雙指針←→)Leetcode重要題型PythonOpenCVPyQt5PytorchPython網頁爬蟲PythonChatbotGoogleColab(Colaboratory)Python小技巧Python崩壞篇C++C++基礎用法C++字串處理C++系統偵測C++OpenCVC++LeetCodeCaffeLinuxLinux基礎指令Linux實用指令Bash自動化程式撰寫Ubuntu/LinuxDockerGitffmpeg機器學習ML基礎觀念ML論文筆記GoogleMachineLearningC++OpenCVPythonOpenCVCaffePytorchTensorRT深度學習DeepLearningDeepLearning–activationfunctionsDeepLearning–OptimizersDeepLearning–LossfunctionsDeepLearning–learningrate程式優化物件導向設計OOP設計模式designpattern平行程式設計程式測試學校筆記計算機概論資料結構DS演算法Algorithm作業系統OS管理科學MS作業研究OR隨手筆記WordPressFacebookSublimeTextVScodeWindowsMac/MacOSUbuntu/Linuxiphone/iOS閱讀筆記心理學筆記股票學習筆記GoogleAdSenseGoogleSheet/Excel【嗡嗡精選】【嗡嗡粗門玩】實境解謎Popworld蹦世界城市尋寶密室逃脫實況相關攝影筆記旅遊筆記【嗡嗡在家宅】【開箱】【面試準備】 我們使用cookies以確保我們可以讓您在我們網站有最好的體驗。

接受拒絕 ➣ReadingTime:43minutes內容目錄 前言先講結論,我們先觀察以下程式碼與結果範例程式碼編譯與結果觀察與結論整理chararray,charpointer範例程式碼–遍歷字串–chararray,charpointer編譯與結果–chararray,charpointer使用注意事項:如何複製chararray?只要是不同大小,都沒有辦法直接進行轉換。

正確使用方式–strcpy將chararray轉成charpointer(chararraytocharpointer)編譯與結果如何assign值進入chararray?範例程式碼–assign值進入chararray編譯與結果:小提醒:在C++裡面,單引號「’」與雙引號「”」是有嚴格的差別的範例–C++中單引號「’a’」,與雙引號「”a”」的差別:編譯與結果–這邊為故意讓他跳錯,我們要看的是類別:如何assign值進入charpointer?範例程式碼–assign值進入charpointer編譯與結果:String範例程式碼–遍歷字串–string編譯與結果–stringcharpointer與string如何轉換?將charpointer轉成string(charpointertostring)範例程式碼–將string轉成charpointer(stringtocharpointer)編譯與結果將string轉成charpointer(stringtocharpointer)範例程式碼–將string轉成charpointer(stringtocharpointer)編譯與結果stringstream範例程式碼–stringstream,與將stringstream轉成string,charpointer(stringstreamtostring,charpointer)編譯與結果–stringReference前言此文章中會整理所有在C/C++字串的相關用法,包含charstringstringstream (與利用sprinf,snprinf,assign值的方法), 其中char我們又會分成chararray,charpointer介紹,以及會介紹他們彼此之間怎麼互相轉換。

我們一共會介紹這些:chararray,charpointer(與利用sprinf,snprinf,assign值的方法)Stringstringstream先講結論,我們先觀察以下程式碼與結果 建議先自己觀察以下程式碼與結果,會比我直接講結論學得更快哦!範例程式碼#include #include usingnamespacestd; intmain() { chars0[10]="Hello"; chars1[]="Hello"; constchar*s2="Hello"; strings3="Hello"; stringstreams4; cout<g++test.cpp-std=c++11-oa.out&&./a.out|c++filt--types; ------s0testing------ char[10],Hello ------s1testing------ char[6],Hello ------s2testing------ charconst*,Hello ------s3testing------ std::__cxx11::basic_string,std::allocator>,Hello charconst*,Hello ------s4testing------ std::__cxx11::basic_stringstream,std::allocator> std::__cxx11::basic_stringstream,std::allocator> std::__cxx11::basic_string,std::allocator>,Hello charconst*,Hello 觀察與結論Datatype主要特色Chararray[C]基本的資料型態,一開始就決定資料儲存使用的空間大小Charpointer[C]基本的指標型態,資料所使用的儲存空間大小不一定String[C++]特別定義做字串處理用的資料型態stringstream[C++]主要功能並不是「作為字串使用」,只是作為資料型態轉換過度的橋樑整理chararray,charpointer這是C/C++最基本的資料型態, 相信會點進來的讀者對這都已經有基本概念了。

我們主要知道,char是代表「一個字元」的儲存。

所以要儲存字串,要使用「chararray」或是「charpointer」, 我們才會得到「一個字元以上」的儲存空間!範例程式碼–遍歷字串–chararray,charpointer我們使用「#include」這個標頭檔, 這個標頭檔定義了「strlen()」的方法,使我們能使用來判斷chararray長度。

#include #include usingnamespacestd; intmain() { inta=2; floatb=3.0; chars0[10]="Hello"; chars1[]="Hello"; constchar*s2="Hello"; for(inti=0;ig++test.cpp-std=c++14-oa.out&&./a.out H H e e l l l l o o H H e e l l l l o o H H e e l l l l o o 使用注意事項:如何複製chararray?只要是不同大小,都沒有辦法直接進行轉換。

以下皆會跳錯:s1=s0; s0=s1; datatype_test.cpp:59:8:error:incompatibletypesinassignmentof‘char[10]’to‘char[6]’ s1=s0; ^~ datatype_test.cpp:60:8:error:incompatibletypesinassignmentof‘char[6]’to‘char[10]’ s0=s1; ^~ 正確使用方式–strcpystrcpy(dst,src);//從src(source)複製到dst(destination) 可使用範圍:chararraychararraychararray—>charpointer(只可以單向) 特別注意:從大複製到小,會有問題,「且不會跳error」。

Debug時需特別注意。

strcpy(s0,s1); strcpy(s0,s2); strcpy(s2,s0);//errorchar無法轉成char* 將chararray轉成charpointer(chararraytocharpointer)pointer本身就是資料的指標,我們只需要將資料的指標指向他就完成囉!#include #include #include usingnamespacestd; intmain() { chars0[30]="HelloWorld!"; char*s1=s0; cout<g++test4.cpp-oa.out&&./a.out HelloWorld! HelloWorld! 如何assign值進入chararray?主要有兩種方法:strcpysprintf/snprintf其中「sprintf/snprintf」的差別只在於空間的使用控制,詳細可以參考以下文章:https://www.wongwonggoods.com/cplusplus/cpp_string_format/cpp-printf/範例程式碼–assign值進入chararray#include #include usingnamespacestd; intmain() { charbuffer1[10]; charbuffer2[10]; strcpy(buffer1,"abcdea"); puts(buffer1); sprintf(buffer2,"abcdea"); puts(buffer2); return0; } 編譯與結果:>g++test4.cpp-std=c++14-oa.out&&./a.out abcdea abcdea 更多「轉換方法」的總整理,我有整理在另外一篇文章:https://www.wongwonggoods.com/cplusplus/convert-char-string-stringstream/小提醒:在C++裡面,單引號「’」與雙引號「”」是有嚴格的差別的小提醒:在C++裡面,單引號「’」與雙引號「”」是有嚴格的差別的 (不像是隔壁棚的python) 單引號「’a’」代表的char,是一個字元 雙引號「”a”」代表的是string,是字串範例–C++中單引號「’a’」,與雙引號「”a”」的差別:char*test1='a'; char*test2="a"; 編譯與結果–這邊為故意讓他跳錯,我們要看的是類別:注意以下的錯誤訊息:「*test1=’a’;」的錯誤說明,我們嘗試將char轉成char*「*test2=”‘a”;」的錯誤說明,我們嘗試將string轉成char*我們得知:單引號「’a’」的類別為char雙引號「”a”」的類別為string「*test1」的類別為char*「*test2」的類別為char*>g++test3.cpp-std=c++14-oa.out&&./a.out test3.cpp:Infunction‘voidtest_snprintf()’: test3.cpp:11:15:error:invalidconversionfrom‘char’to‘char*’[-fpermissive] char*test1='a'; ^~~ test3.cpp:14:15:warning:ISOC++forbidsconvertingastringconstantto‘char*’[-Wwrite-strings] char*test2="a"; ^~~ 如何assign值進入charpointer?範例程式碼–assign值進入charpointer依照pointer的概念,我們宣告一個新位置, 並將舊位置指定到新位置,即可完成任務。

#include #include usingnamespacestd; intmain() { char*buffer1; char*buffer2="abcdea"; buffer1=buffer2;//assignpointertopointer puts(buffer1); puts(buffer2); return0; } 編譯與結果:可以注意到有跳出warning,主要是因為宣告char*, 我們會建議宣告時使用constchar*,表示我們宣告的是常數。

>g++test4.cpp-oa.out&&./a.out test4.cpp:Infunction‘intmain()’: test4.cpp:9:19:warning:ISOC++forbidsconvertingastringconstantto‘char*’[-Wwrite-strings] char*buffer2="abcdea"; ^~~~~~~~ abcdea abcdea Stringstring是C++特別定義做字串處理用的資料型態。

範例程式碼–遍歷字串–stringstring已經是c++內建的資料型態,我們不需要另外include其他標頭檔。

想要得到string長度有兩種方法,size()與length(), 據官方文件所述,兩者功能沒有差別。

只是就表達程式碼語意來說,可以自行選擇哪個能讓人比較好懂。

#include usingnamespacestd; intmain() { strings3="Hello"; for(inti=0;ig++test2.cpp-std=c++14-oa.out&&./a.out H e l l o H e l l o charpointer與string如何轉換?相信這也是讀者接下來會想問的問題,(不然這至少也是我會想問的問題XD) 我們就把問題拆開來看吧!將charpointer轉成string(charpointertostring)很簡單,直接等於「=」就好了! 記法的話,也許你可以想像Char比較基本,string是後來的,作法當然很簡單! 我們可以用另外一篇文章提供的type_name方法來檢驗。

可參考:【C++】C/C++顯示資料的類別(type)samplecode(內含範例程式碼)printCdatatype,coutC++datatype,getvariabletypeinc++範例程式碼–將string轉成charpointer(stringtocharpointer)#include usingnamespacestd; voidshow_type(autos) { cout<g++test2.cpp-std=c++14-oa.out&&./a.out|c++filt--types; char*,HelloWorld std::__cxx11::basic_string,std::allocator>,HelloWorld HelloWorld 將string轉成charpointer(stringtocharpointer)其實也很簡單,都已經幫我們做好了,只需要下「c_str()」即可。

範例程式碼–將string轉成charpointer(stringtocharpointer)#include #include usingnamespacestd; voidshow_type_and_content(autos) { cout<g++test2.cpp-std=c++14-oa.out&&./a.out|c++filt--types; std::__cxx11::basic_string,std::allocator>,HelloWorld charconst*,HelloWorld char*,HelloWorld char*,HelloWorld stringstreamstringstream主要功能並不是「作為字串使用」,只是作為資料型態轉換過度的橋樑。

例如:int轉換成stringstream再轉換成string。

(反過來也行~) 使用時,需include標頭檔「#include」範例程式碼–stringstream,與將stringstream轉成string,charpointer(stringstreamtostring,charpointer)#include #include usingnamespacestd; intmain() { strings3="Hello"; stringstreams4; cout<g++datatype_test.cpp-std=c++14-oa.out&&./a.out|c++filt--types; std::__cxx11::basic_stringstream,std::allocator> std::__cxx11::basic_stringstream,std::allocator> std::__cxx11::basic_string,std::allocator>,Hello charconst*,Hello Referencechararray,string,stringstreamc++:像sprintf一樣的std::string格式Howtoconvertachararraytoastring?字串長度、複製、串接strlen()–C語言庫函數FindingthelengthofaCharacterArrayinCC++–pointertochar、arrayofpointertochar、pointertoarrayofchar(C++軟體開發–指標與字元與陣列概念與實例)stringstream用法整理⭐C++基礎用法相關文章整理⭐:1.【C++】C++compile程式碼使用c++11與使用相關的package2.【C++】C/C++顯示資料的類別(type)samplecode(內含範例程式碼)printCdatatype,coutC++datatype,getvariabletypeinc++3.【C++】C++複製2Darray的方法copy2darraymemcpysamplecode(內含範例程式碼)⭐C++字串處理相關文章整理⭐:1.【C++】字串charstringstringstream相關用法總整理(內含範例程式碼)與利用sprinf,snprinfassign值的方法2.【C++】字串charstringstringstream「轉換」用法總整理(內含範例程式碼)3.【C】printf,fprintf,sprintf,snprintf相關用法總整理(內含範例程式碼)4.【C++】C++String用法連接兩個Stringc++stringconcat⭐C++系統偵測相關文章整理⭐:1.【C++】C++利用dirent.h計算資料夾的檔案數量countfilessamplecode(內含範例程式碼)2.【C++】C++inotifysamplecode偵測指定路徑底下的文件變化(內有範例程式碼)⭐C++OpenCV相關文章整理⭐:1.【OpenCV】c++OpenCV–在ubuntu上第一次執行OpenCV程式samplecode(內含範例程式碼)2.【OpenCV】c++OpenCV-在圖片上寫上文字cv::putTextsamplecode(內含範例程式碼)3.【OpenCV】c++OpenCV-cv::Rect矩形用法與相關功能函數samplecode(內含範例程式碼)4.【OpenCV】c++OpenCV-OpenCV中的純量定義顏色cv::Scalar(255,255,255)colorsamplecode(內含範例程式碼)5.【OpenCV】用C++計算iou的方法與網路算法常見錯誤(內附範例程式碼)samplecode⭐【喜歡我的文章嗎?歡迎幫我按讚~讓基金會請創作者喝一杯咖啡!】 如果喜歡我的文章,請幫我在下方【按五下Like】(Google,Facebook免註冊),會由「LikeCoin」贊助作者鼓勵繼續創作,讀者們「只需幫忙按讚,完全不用出錢」哦! PostViews: 6,571#C++#C++字串處理#SampleCode#隨手筆記 HowardWeng我是HowardWeng,很多人叫我嗡嗡。

這個網站放了我的各種筆記。

希望這些筆記也能順便幫助到有需要的人們!如果文章有幫助到你的話,歡迎幫我點讚哦! 文章: 662 上一文章 【C++】C/C++顯示資料的類別(type)samplecode(內含範例程式碼)printCdatatype,coutC++datatype,getvariabletypeinc++ 下一文章 【C】printf,fprintf,sprintf,snprintf相關用法總整理(內含範例程式碼) 1則留言★留個言吧!內容有誤或想要補充也歡迎與我討論!  取消回覆 […]【C++】字串charstringstringstream相關用法總整理(內含範例程式碼)與利用spr…[…]站內文字搜尋🔍🔍🔍文章分類📚📚📚文章分類📚📚📚選取分類【嗡嗡精選】  (48)   【嗡嗡在家宅】  (11)      【開箱】  (7)      youtube  (1)   【嗡嗡粗門玩】  (17)      實境解謎  (5)         Popworld蹦世界  (4)         城市尋寶  (1)      實況相關  (2)      攝影筆記  (7)      旅遊筆記  (1)   【面試準備】  (10)Android  (4)Arduino  (9)C++  (51)   C++LeetCode  (7)   C++Makefile  (12)   C++OpenCV  (7)   C++基礎用法  (7)   C++字串處理  (4)   C++系統偵測  (2)Cloud  (2)Debug/Error  (65)HCI  (3)Linux  (120)   autoscript  (8)   Bash自動化程式撰寫  (11)   Docker  (10)   ffmpeg  (10)   Git  (9)   Linux基礎指令  (16)   Linux實用指令  (31)   Ubuntu/Linux  (56)Python  (366)   GoogleColab(Colaboratory)  (2)   PyQt5  (33)   PythonChatbot  (6)   PythonLeetCode  (222)      BFS(拓樸排序)  (1)      BFS(最短路徑)  (1)      BFS(連通圖搜索)  (3)      BinarySerach  (4)      DFS(BST)  (2)      DFS(TreeBasic)  (8)      DFS(全部方案)  (8)      DFS(排列permutation)  (5)      DFS(組合combination)  (7)      DP(座標型–一維)  (3)      DP(座標型–二維)  (3)      DP(記憶化搜索memoization)  (1)      HashTable  (4)      Interval  (1)      Leetcode重要題型  (25)      LinkedList  (11)      Queue  (1)      Twopointers(Npointersmerge多項合併)  (1)      Twopointers(同向雙指針→→)/Slidingwindow  (2)      Twopointers(同向雙指針→→)/slow,fast(快慢雙指針)  (6)      Twopointers(相向雙指針→←)/start,end(頭尾雙指針)  (13)      Twopointers(背向雙指針←→)  (3)   PythonOpenCV  (40)   Python基礎用法  (16)   Python字串處理  (3)   Python小技巧  (4)   Python平行運算  (7)   Python檔案處理  (9)   Python測試程式  (2)   Python系統偵測  (2)RaspberryPi3  (8)UI/UX  (3)Verilog  (1)Web  (3)Xamarin  (1)作品集  (115)   11th鐵人賽–《Googlemachinelearning學習筆記》  (30)   12th鐵人賽–【錢不夠買ps的我,只好用OpenCV來修圖了!】  (30)   13th鐵人賽–【今年還是不夠錢買psQQ,不如我們用PyQt自己寫一個】  (30)   個人作品  (11)   得獎作品  (7)      全國第一名  (3)      全國第三名  (3)      台灣代表隊  (1)   演講ppt  (2)   競賽作品  (13)學校筆記  (12)   作業研究OR  (6)   作業系統OS  (1)   演算法Algorithm  (4)   管理科學MS  (6)   計算機概論  (1)待整理筆記  (5)機器學習  (45)   Caffe  (2)   GoogleMachineLearning  (30)   ML基礎觀念  (2)   Pytorch  (10)   TensorRT  (1)   深度學習DeepLearning  (5)      DeepLearning–Optimizers  (3)程式優化  (12)   CodingStyle  (1)   平行程式設計  (7)   物件導向設計OOP  (2)   程式測試  (2)隨手筆記  (81)   Facebook  (1)   GoogleAdSense  (4)   GoogleSheet/Excel  (4)   iphone/iOS  (4)   Mac/MacOS  (20)   SublimeText  (6)   VScode  (3)   Windows  (13)   Wordpress  (14)   心理學筆記  (5)   股票學習筆記  (1)   閱讀筆記  (1) 內容目錄📖📖📖 前言先講結論,我們先觀察以下程式碼與結果範例程式碼編譯與結果觀察與結論整理chararray,charpointer範例程式碼–遍歷字串–chararray,charpointer編譯與結果–chararray,charpointer使用注意事項:如何複製chararray?只要是不同大小,都沒有辦法直接進行轉換。

正確使用方式–strcpy將chararray轉成charpointer(chararraytocharpointer)編譯與結果如何assign值進入chararray?範例程式碼–assign值進入chararray編譯與結果:小提醒:在C++裡面,單引號「’」與雙引號「”」是有嚴格的差別的範例–C++中單引號「’a’」,與雙引號「”a”」的差別:編譯與結果–這邊為故意讓他跳錯,我們要看的是類別:如何assign值進入charpointer?範例程式碼–assign值進入charpointer編譯與結果:String範例程式碼–遍歷字串–string編譯與結果–stringcharpointer與string如何轉換?將charpointer轉成string(charpointertostring)範例程式碼–將string轉成charpointer(stringtocharpointer)編譯與結果將string轉成charpointer(stringtocharpointer)範例程式碼–將string轉成charpointer(stringtocharpointer)編譯與結果stringstream範例程式碼–stringstream,與將stringstream轉成string,charpointer(stringstreamtostring,charpointer)編譯與結果–stringReference訂閱最新文章📬📬📬歡迎留下你的email,有新文章時,我們會自動發信給您ヽ(✿゚▽゚)ノ 請輸入您的email(●´ω`●)ゞ 訂下去(ノ>ω



請為這篇文章評分?