编码是否会影响 strstr() 的结果(和相关函数)
Does encoding affect the result of strstr() (and related functions)
字符集编码会影响strstr((函数的结果吗?
例如,我已经读取了一个数据到"buf"并执行以下操作:
char *p = strstr (buf, "UNB");
我想知道数据是用 ASCII 编码还是其他编码(例如 EBCDIC(会影响此功能的结果?(由于"UNB"是不同编码方式下的不同比特流...
如果是,用于这些函数的默认值是什么?(ASCII?
谢谢!
C 函数strstr
对原始char
数据进行操作,独立于编码。 在这种情况下,您可能有两个不同的编码:编译器用于字符串文字的编码,以及您的程序在填充时使用的那个 buf
. 如果这些不是相同,则函数可能无法按预期工作。
关于"默认"编码,至少到目前为止没有就标准而言;"基本执行字符设置"是实现定义的。 在实践中,没有的系统使用源自 ASCII 的编码(ISO 8859-1 似乎是最常见的,在至少在欧洲(极为罕见。 至于你得到的编码在buf
中,这取决于角色来自哪里;如果你是从istream
读取,imbue
这取决于流。 然而,在实践中,几乎所有这些(UTF-8,ISO8859-x等(派生自 ASCII,并且与 ASCII 相同对于基本执行字符集中的所有字符(包括繁体 C 语言中所有合法的字符(。 所以对于 "UNB"
,你很可能是安全的。 (但是对于像"üéâ"
这样的东西,你几乎当然不是。
字符串常量 ("UNB"( 以源文件编码进行编码,因此它必须与缓冲区的编码匹配
两个字符串参数必须使用相同的编码。使用字符串文本C++源的编码(平台编码(。对于 Unicode,UTF-8 函数还有另一个问题:Unicode 具有带有变音符号的重音字母,但这些字母也可以编码为基本字母加上组合音调符号。 é 可以是一個字母 [é] 或兩個:[e] + [combining-']。存在规范化。
对于Java来说,将源代码编码显式设置为UTF-8正在变得很普遍(一个非常安静的发展(。对于C++项目,我不知道这样的公约会变得普遍。
strstr
应该在 UTF-8 编码的 unicode 字符上没有问题。
使用此函数,数据以ASCII编码。
- 如何从递归函数中完全返回,该函数给出了每个函数结果的累积相加?
- 分段错误分配函数结果
- 使用函数结果作为参数的 C++
- 从可调用可变参数元组中的函数结果创建元组
- 将多个向量(函数结果)组合到一个使用模板中
- 是否可以使用自动占位符来推断非类型模板参数中的函数结果
- 大小由虚函数结果决定的数组
- C/C++编译器是否会通过重用最近计算的函数结果来优化代码?
- 从函数结果中分配 std::shared_ptr 的一行是什么?
- 将函数结果分配给变量的问题
- std::具有自定义比较函数结果的排序函数错误:必须调用对非静态成员函数的引用
- C++SFINAE运算符/函数结果类型检查
- 将函数结果作为"output parameter"返回是什么意思?
- 这将是在将函数分配给变量或一次又一次地调用函数之间使用函数结果的最佳方式
- C++中的绑定函数结果
- 有没有比生成/累积更快的方法来计算函数结果的平均值
- 为什么当递归函数结果相乘时,g++ 仍然优化尾递归
- C++成员函数结果缓存实现
- 用于输出列中对数函数结果的合适循环(c++)
- 将记录作为函数结果从Delphi DLL传递到c++