在 C 中使用輸入流時,通常使用 'cin' 讀取使用者輸入。預設情況下,「cin」將空白字元視為分隔符,分隔單字或標記。如果您需要使用不同的分隔符號怎麼辦?
雖然 C 標準函式庫 API 沒有明確提供更改「cin」分隔符號的方法,但可以使用「std::」來實現此目的ios_base::imbue' 函數。
'std::ios_base::imbue' 允許您為輸入新增自訂 'ctype' 方面 溪流。 Ctype 分面定義給定語言環境的字元分類行為。
以下範例示範如何將分隔符號變更為冒號(':')字元:
#include <locale> #include <iostream> struct colon_is_space : std::ctype<char> { colon_is_space() : std::ctype<char>(get_table()) {} static mask const* get_table() { static mask rc[table_size]; rc[':'] = std::ctype_base::space; rc['\n'] = std::ctype_base::space; return &rc[0]; } }; int main() { using std::string; using std::cin; using std::locale; cin.imbue(locale(cin.getloc(), new colon_is_space)); string word; while(cin >> word) { std::cout << word << "\n"; } }
在此範例中,建立了一個自訂「ctype」構面「colon_is_space 」。此方面將冒號 (':') 和換行符 ('n') 字元分類為空格。
透過使用此自訂方面向輸入流注入語言環境,我們有效地將 'cin' 的分隔符號變更為冒號。因此,當使用提取運算子 (>>) 讀取輸入時,它將把冒號視為分隔符號。
此技術可用於處理使用非空白字元作為分隔符號的輸入格式.
以上是如何更改 C 中「cin」輸入的分隔符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!