C/C++去除中文(全角)标点符号
总结
在 C/C++ 中去除中文(全角)标点符号,需要处理字符编码及其在字符串中的匹配。以下是详细步骤和示例代码:
定义全角标点符号范围:全角标点符号通常位于 Unicode 的特定范围内。可以通过字符的 Unicode 值来识别这些符号。
编写去除函数:使用字符编码函数(如
iswpunct
和iswspace
)来判断字符是否是标点符号。C++ 里通常使用宽字符(wchar_t
)处理 Unicode 字符。实现示例代码:
cpp#include <iostream> #include <string> #include <locale> #include <cwctype> // 判断是否是全角标点符号 bool isFullWidthPunctuation(wchar_t ch) { return (ch >= 0x3000 && ch <= 0x303F) || // CJK 符号和标点 (ch >= 0xFF00 && ch <= 0xFFEF); // 全角字符 } // 去除中文标点符号 std::wstring removeChinesePunctuation(const std::wstring& input) { std::wstring result; for (wchar_t ch : input) { if (!isFullWidthPunctuation(ch)) { result += ch; } } return result; } int main() { std::locale::global(std::locale("")); // 设置本地环境 std::wstring text = L"这是一个测试,包含全角标点!比如:,。"; std::wstring cleanedText = removeChinesePunctuation(text); std::wcout << L"Original: " << text << std::endl; std::wcout << L"Cleaned: " << cleanedText << std::endl; return 0; }
注意事项:
- 确保使用合适的编码设置(例如 UTF-8)来处理 Unicode 字符。
wchar_t
和宽字符处理有助于处理多字节的 Unicode 字符集。- 可能需要调整
isFullWidthPunctuation
函数以覆盖更多的全角符号。
关键字
C++, C, 去除标点, 中文标点符号, 全角字符, Unicode, wchar_t
, 宽字符, 标点符号, std::wstring