在C 中自訂輸入流分隔符號
輸入流,例如標準輸入流std::cin,使用空格字元作為分隔字元符預設。但是,如果您需要使用替代字元作為分隔符號怎麼辦?
不幸的是,C 標準函式庫並沒有提供更改 std::cin 分隔符號的直接方法。但是,有一個解決方法,使用 std::ios_base::imbue 函數來新增自訂 ctype 方面。
下面的程式碼示範如何將 std::cin 的分隔符號更改為冒號字符,有效地讀取/etc/passwd 樣式的分隔單字。
#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() { std::cin.imbue(std::locale(std::cin.getloc(), new colon_is_space)); std::string word; while (std::cin >> word) { std::cout << word << "\n"; } }
在此程式碼中,colon_is_space 類別被定義為自訂 ctype將冒號 (':') 和換行符號 ('n') 字元標識為空白字元的構面。透過將此方面融入 std::cin,我們有效地將空白字元的識別擴展到包括冒號。
因此,當您使用 std::cin >>運算符,它將讀取由冒號分隔的單字。這使您可以輕鬆解析遵循冒號分隔格式的資料檔案。
以上是如何在 C 中自訂輸入流分隔符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!