gpt4 book ai didi

c++ - 替换C++字符串中的标点符号

转载 作者:行者123 更新时间:2023-11-28 01:20:16 26 4
gpt4 key购买 nike

我试图理解为什么 binary_search() 找不到某些标点字符而 find() 找到了:

array<char, 25> punctuation_chars{'\'', '\"', ',', '.', ';', ':', '+', '*', '-', '_', '?', '!', '=', '|', '^', '/', '\\', '(', ')', '[', ']', '{', '}', '<', '>'};

bool is_punctuation(char c)
{
auto ret = find(cbegin(punctuation_chars), cend(punctuation_chars), c) != cend(punctuation_chars);
// auto ret = binary_search(cbegin(punctuation_chars), cend(punctuation_chars), c);
if (c == ',')
cout << c << " is" << (ret ? "" : " not") << " punctuation" << endl;
return ret;
}

注释行不起作用(例如,for c == ',' 返回 false),而 find 返回 cend(punctuation_chars)...

最佳答案

punctuation_chars 未排序,因此 std::binary_search 将不起作用。你需要调用 std::sort:

std::sort(std::begin(punctuation_chars), std::end(punctuation_chars));

关于c++ - 替换C++字符串中的标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56639792/

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