字符串類型的輸入輸出


首先定義一個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;
}

 


免責聲明!

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



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