-1
我是C編程語言的新手。我用C++編寫了一些程序,我知道scanf用於輸入,\n
表示下一行,但我無法理解完整的表達式。 什麼是等效的C++語法?這是什麼意思「scanf(」%[^ n]「,buf);」 ?它的等價C++語法是什麼?
我是C編程語言的新手。我用C++編寫了一些程序,我知道scanf用於輸入,\n
表示下一行,但我無法理解完整的表達式。 什麼是等效的C++語法?這是什麼意思「scanf(」%[^ n]「,buf);」 ?它的等價C++語法是什麼?
這意味着「讀取所有內容,直到遇到行尾字符,並將結果存儲在提供的char*
指針中」。一個相當於C++的語法是完全一樣的(你需要包括<cstdio>
爲該),但在C++中,你應該更喜歡基於字符串的API來scanf
:
string buf;
getline(cin, buf);
這樣做的原因是,scanf
與格式字符串如果最終用戶輸入的字符數大於buf
的大小,則C或C++將繼續將數據寫入內存,導致未定義的行爲。您可以修復格式字符串(強烈推薦)的輸入限制緩衝區的大小,類似這樣的:
char buf[100];
scanf("%99[^\n]", buf);
但現在你被限制在99個字符以內的字符串。另一方面,std::getline
與std::string
沒有此限制。