為什麼第乙個c 程式沒錯,第二個有錯?

時間 2021-06-08 03:28:07

1樓:wang

因為這一句 using namespace std; 使得程式引入了 std 命名空間內的符號。

導致 std::remove_if 無法確定你要的 ispunct

到底是來自 ctype.h 標頭檔案的 ispunct - cppreference.com

還是來自 cctype 標頭檔案的 std::ispunct - cppreference.com

你可以手動寫成 ::ispunct 指定要 C 語言的版本就行了

然而你會發現,當你打算寫成 std::ispunct 指定要用 C++ 的版本還是會出錯,為什麼?

因為 C++ 還有乙個過載版本,位於 locale 標頭檔案的:std::ispunct(std::locale) - cppreference.com

ctype.h 和 locale 雖然沒有直接包含進來,但是你用到的標頭檔案內部依賴這些,所以也被包含進程式中。

你可能會問,這兩個 std::ispunct 明明應該會匹配乙個引數的版本,這也區分不了的咯?

是的,無法區分,然而有辦法幫編譯器做出選擇:

乙個關於「過載的函式與函式物件std::function」的問題? - 知乎

2樓:SuperFashi

有三個ispunct,編譯器不知道你要哪個,所以報錯。最方便的解決辦法就是寫個lambda,包裝一下ispunct。

@王尼瑪 的回答更好,去看他的吧。

為什麼家裡第二個孩子的性格不如第乙個孩子溫和。?

魏麗 這不是普遍現象。老大和老二的性格是由家庭裡的環境決定的。如果老大在家裡做了多年的獨生子然後老二的降臨就讓老大倍感競爭,這時候的老大可能會變得不聽話不溫和,目的是奪取父母的關注。如果老大各方面發展良好很優秀,那老二出生後就處於在後面緊追的地位,那老二就變得脾氣不好。引導的關鍵是讓二個孩子多合作。...

你的第乙個孩子對你第二個孩子的出生有什麼看法?

丁姿亦 我家哥哥比弟弟大五歲。哥哥在上幼兒園的時候,班級裡已經流行起了生老二。他和他的好朋友們的日常交流就是 XX今天給弟弟餵奶了 XX的妹妹今天剪頭髮了等等。再加上他的幼兒園屬於蒙特梭利的混齡幼兒園,從入學開始,他們身邊就會有相差3歲的哥哥姐姐們,而到了畢業時候又會有相差3歲的弟弟妹妹們。可以說,...

如何看待 第乙個孩子養廢了,第二個孩子好好養 的說法?

藍莓地中海 孩子又不是做陶藝。而且這麼容易放棄的家長,養第二個孩子的過程中遇到些許困難也容易放棄第二個,如此看來,養一百次也是廢。不如安安心心認認真真先養好第乙個。哪怕前半段沒做好,孩子有些問題,餘生還有很長的時間可以繼續教育的。養兒一百歲,常憂九十九,這就是做父母的對孩子的教育,是長期的過程。 雲...