gpt4 book ai didi

c++ - 使用 ispunct ('ø' 时调试断言失败)

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:45 26 4
gpt4 key购买 nike

我正在编写一个处理大部分文本的程序,需要删除标点符号。我遇到了一个 Debug Assertion Failed 错误,并将其隔离为:在非英文字母上测试 ispunct() 时发生。

我的测试程序现在是这样的:

ma​​in.c

int main() {
ispunct('ø');
cin.get();
return 0;
}

Debug Assertion Failed 窗口如下所示: Screenshot of the error

我试过的所有非英文字母都会导致这个问题,包括'æ'、'ø'、'å'、'é'等。标点符号和英文字母不会导致这个问题。这可能是我忽略的非常简单的事情,所以我感谢您的帮助!

最佳答案

字符 'ø' 必须可以表示为 unsigned char,否则您应该使用类型 wchar_tstd::ispunct ,例如:

#include <iostream>
#include <locale>

int main()
{
const wchar_t c = L'ø';

std::locale loc("en_US.UTF-8");

std::ispunct(c, loc);
}

对于你的问题,你也可以这样做:

#include <locale>
#include <string>
#include <algorithm>
#include <functional>

int main()
{
std::wstring word = L"søme.?.thing";

std::locale loc("en_US.UTF-8");

using namespace std::placeholders;

word.erase(std::remove_if(word.begin(), word.end(),
std::bind(std::ispunct<wchar_t>, _1, loc)), word.end());

std::wcout << word << std::endl;
}

关于c++ - 使用 ispunct ('ø' 时调试断言失败),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35388936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com