怎麼說呢,我自己的理解,這應該是兩個東西。
scanf是C語言裡面的東西
string是C++裡面的東西
剛開始學習C++的時候,很多人為了理解方便,將string型別強行解釋為和C語言中的字串,但是不是的。
string是一個類,由這個類定義的變數被稱為string型別,裡面各種符號被過載,因為C++想可以的讓string成為一個封裝更好的字串,你可以使用裡面的resize函式開闢大小,使用c_str將他轉換成C風格的字串,但是他追根到底其實和字串是有區別的。
而scanf是C語言裡面的用來給有個格式的變數賦值的,比如:%d-->int型別這種非自定義型別的變數賦值,但是你有見過使用scanf給自定義的型別賦值的嗎?
而且string屬於面向物件裡面的用法,C語言是不具有面向物件的特性的~
雖然我沒有試,到底能不能使用scanf給string型別複製,但是在實際開發中規範的使用還是儘量C語言和C++不要混編
當然。非要混編的時候,我們也不能全部避免,但是還是小心使用。
--------------------------this is a 分割線-------------------------------------
建議可以在網上查詢string類的原始碼,不是很難,看一下大概意思,就能明白這玩意到底是幹什麼的~
【DY_1024的部落格】進階的小白 - CSDN部落格
怎麼說呢,我自己的理解,這應該是兩個東西。
scanf是C語言裡面的東西
string是C++裡面的東西
剛開始學習C++的時候,很多人為了理解方便,將string型別強行解釋為和C語言中的字串,但是不是的。
string是一個類,由這個類定義的變數被稱為string型別,裡面各種符號被過載,因為C++想可以的讓string成為一個封裝更好的字串,你可以使用裡面的resize函式開闢大小,使用c_str將他轉換成C風格的字串,但是他追根到底其實和字串是有區別的。
而scanf是C語言裡面的用來給有個格式的變數賦值的,比如:%d-->int型別這種非自定義型別的變數賦值,但是你有見過使用scanf給自定義的型別賦值的嗎?
而且string屬於面向物件裡面的用法,C語言是不具有面向物件的特性的~
雖然我沒有試,到底能不能使用scanf給string型別複製,但是在實際開發中規範的使用還是儘量C語言和C++不要混編
當然。非要混編的時候,我們也不能全部避免,但是還是小心使用。
--------------------------this is a 分割線-------------------------------------
建議可以在網上查詢string類的原始碼,不是很難,看一下大概意思,就能明白這玩意到底是幹什麼的~
【DY_1024的部落格】進階的小白 - CSDN部落格