C/C++去除中文(全角)标点符号

总结

在 C/C++ 中去除中文(全角)标点符号,需要处理字符编码及其在字符串中的匹配。以下是详细步骤和示例代码:

  1. 定义全角标点符号范围:全角标点符号通常位于 Unicode 的特定范围内。可以通过字符的 Unicode 值来识别这些符号。

  2. 编写去除函数:使用字符编码函数(如 iswpunctiswspace)来判断字符是否是标点符号。C++ 里通常使用宽字符(wchar_t)处理 Unicode 字符。

  3. 实现示例代码

    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; }
  4. 注意事项

    • 确保使用合适的编码设置(例如 UTF-8)来处理 Unicode 字符。
    • wchar_t 和宽字符处理有助于处理多字节的 Unicode 字符集。
    • 可能需要调整 isFullWidthPunctuation 函数以覆盖更多的全角符号。

关键字

C++, C, 去除标点, 中文标点符号, 全角字符, Unicode, wchar_t, 宽字符, 标点符号, std::wstring