首先定義一個string s,char c[10];
在C++中,可以直接用cin>>s或者cin>>c輸入,用cout<<s或者cout<<c輸出;
而在C中,char類型可以用scanf("%s",c)輸入,string類型只能用其構造函數string str( "Now is the time..." )賦值,如string s="abcd",輸出用printf("%s",s.c_str())或者printf("%s",c)輸出;
原因在於string是一個對象,s返回的是當前對象的首地址,而string中c_str()成員方法返回當前字符串的首字符地址,而在C++中,string重載了“<<”操作符,所以可以直接輸出字符串;
在VS中,最新的微軟編譯器認為scanf的使用存在安全隱患,因為C/C++中的字符串處理都是以\0為截止符的,如果搜索不到\0,容易出現字符串越界,所以VC擴展的安全標准庫中都添加了一個參數用以指定字符串參數的長度,用以避免這種安全隱患。 所以在VS中要用scanf_s()來輸入,數組則要用scanf_s(“%s”,&name,n),name是數組名,n就是該數組的大小,可以用sizeof(name)來指定n的值。
下面貼出VS中的示例代碼:
int main() { int a; scanf_s("%d", &a); printf("%d\n", a); char c[10]; scanf_s("%s", &c, sizeof(c)); printf("%s\n", c); return 0; }
