Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ICU:整个字符串的简单案例映射_C++_Utf 8_Icu - Fatal编程技术网

C++ ICU:整个字符串的简单案例映射

C++ ICU:整个字符串的简单案例映射,c++,utf-8,icu,C++,Utf 8,Icu,我想在UTF-8字符串中找到一个子字符串,不区分大小写。从我读到的内容来看,通常的做法是将字符串大小写折叠,以使其成为规范形式 但是,由于大小写折叠可以更改字符串的长度(我不想更改字符串的长度,因为我需要知道原始字符串中子字符串匹配的确切偏移量),因此我似乎应该使用。虽然不区分大小写的比较不准确,但这将是最好的选择 但是,我在ICU API中找不到对具有简单大小写映射的字符串进行操作的函数。我只能为单字符函数(uchar.h中的u\u foldCase())找到简单的大小写映射。是否有一个选项可

我想在UTF-8字符串中找到一个子字符串,不区分大小写。从我读到的内容来看,通常的做法是将字符串大小写折叠,以使其成为规范形式

但是,由于大小写折叠可以更改字符串的长度(我不想更改字符串的长度,因为我需要知道原始字符串中子字符串匹配的确切偏移量),因此我似乎应该使用。虽然不区分大小写的比较不准确,但这将是最好的选择


但是,我在ICU API中找不到对具有简单大小写映射的字符串进行操作的函数。我只能为单字符函数(uchar.h中的
u\u foldCase()
)找到简单的大小写映射。是否有一个选项可以对整个字符串使用简单的大小写折叠?

这是否回答了您的问题?不,我实际上不是在处理单个子字符串搜索,而是使用字符串匹配算法处理多个子字符串搜索。。。但这与问题不太相关,所以我没有提到……好吧,那么我不理解这个问题。您能否显示示例输入和预期输出?它应该找到一个子串的多个实例,还是多个不同子串的单个实例?另外,ICU API(已经移动到您提到的位置)在这里是不相关的,因为它使用Unicode字符。对于UTF,您不需要任何额外的API。我正在查找字典(多个字符串)使用boyer moore和类似算法的内部文本。为什么我不需要任何API?我有UTF-8单词和UTF-8文本,我想搜索文本中的单词-不区分大小写。因此我需要对文本和单词执行大小写映射…因为映射很简单。只包含值范围为65-90(大写)的字符应被视为等于范围97-122(小写)中的字符。也就是说,该范围之外的映射就是标识,因此您可以使用一个静态127元素数组来进行字符比较,或者只需编写一个
bool比较(char a,char b)
函数中有一个条件,或者使用。这就是为什么不清楚您要的是什么,特别是没有提供任何实际的代码。这是否回答了您的问题?不,我实际上不是在处理单个子字符串搜索,而是使用字符串匹配算法处理多个子字符串搜索…但是它与问题不太相关,所以我没有提到…OK、 那我就不明白这个问题了。你能展示一下示例输入和预期输出吗?它应该能找到一个子串的多个匹配项,或者多个不同子串的单个匹配项?还有(已经移动到您提到的位置与此无关,因为它使用Unicode字符。对于UTF,您不需要任何其他API。我正在查找字典(多个字符串)使用boyer moore和类似算法的内部文本。为什么我不需要任何API?我有UTF-8单词和UTF-8文本,我想搜索文本中的单词-不区分大小写。因此我需要对文本和单词执行大小写映射…因为映射很简单。只包含值范围为65-90(大写)的字符应被视为等于范围97-122(小写)中的字符。也就是说,该范围之外的映射就是标识,因此您可以使用一个静态127元素数组来进行字符比较,或者只需编写一个
bool比较(char a,char b)
函数中有条件,或者使用。这就是为什么不清楚您要求的是什么,特别是没有提供任何实际代码的原因。