gpt4 book ai didi

c++ - 如何找出具有文件路径的字符串中是否有任何非ASCII字符

转载 作者:搜寻专家 更新时间:2023-10-31 00:53:36 27 4
gpt4 key购买 nike

检测文件路径中是否有非ASCII字符

我有一个采用 UTF-8 编码的 Unicode 字符串,用于存储文件路径,例如 C:\Users\myUser\Downloads\ü.pdf。我已经检查过该字符串在本地文件系统中是否包含正确的文件路径,但由于我将此字符串发送到另一个仅支持 ASCII 的进程,因此我需要弄清楚该字符串是否包含任何非 ASCII 字符。

我该怎么做?

最佳答案

ASCII 字符仅使用 char 的低 7 位(值 0-127)。以 UTF-8 编码的非 ASCII Unicode 字符使用 char 元素,这些元素都设置了高位。因此,您可以简单地迭代 char 元素,看看它们中是否有任何值大于 127,例如:

bool containsOnlyASCII(const std::string& filePath) {
for (auto c: filePath) {
if (static_cast<unsigned char>(c) > 127) {
return false;
}
}
return true;
}

关于转换的注意事项:std::string 包含 char 元素。该标准未定义 charsigned 还是 unsigned。如果它是 signed,那么我们可以以定义明确的方式将其转换为 unsigned。该标准明确规定了这是如何完成的。

关于c++ - 如何找出具有文件路径的字符串中是否有任何非ASCII字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48212992/

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