關於C語言中有string類型嗎?


 

一、問題來源

   今天在VS2010平台上,嘗試采用scanf()

string word;

scanf("%s",&word);

然后發現錯誤,輸出采用

printf("%s\t",word);

發現也不行,然后轉換成cin和cout就OK,於是懷疑是不是%s出了問題,果然是這樣。

因為在C中的字符串是存儲在char數組中,是一個基本類型的組合,但是string則是C++中的封裝好的類。

所以輸出可以采用

printf("%s\t",word.c_str());

但是感覺輸入是沒得救啊!

2.網上解答(來源於百度知道)

一直以來對這個問題都不是很清楚:只是知道C語言里有<string.h這個頭文件,所以就想當然的認為C語言里有string這個
類型,可以通過下面這種形式來聲明string的變量 string aString;
后來編程時發現通不過編譯,又查資料才知道原來C語言里壓根就沒有string這個類型,所以字符串都是通過char數組來存儲的,
而<string.h這個頭文件里聲明的函數原型也全是針對char數組的種種操作。直到C++中才出現了string這個類(注意是類,
不是類型)。這是網上我找到的比較滿意的答復:
" C語言中有string類型變量嗎"
這里的 string 有 二 義性。
(1) 如果 string 是普通詞匯,“C語言中有字符類型變量嗎”, 答,有。 字符類型 用 char 聲明。
char str[]="This is a string";
(2) 如果 string 是專用詞匯,“C語言中有string類型變量嗎”,答,沒有。string 是 類,是 class, 不是類型,不是 type.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM