计算化学公社
标题:
一种在C代码中识别是否存在非ASCII字符的方法分享与讨论
[打印本页]
作者Author:
TerminSong
时间:
2025-4-9 10:08
标题:
一种在C代码中识别是否存在非ASCII字符的方法分享与讨论
本帖最后由 TerminSong 于 2025-4-9 11:07 编辑
由于现在大家大多是双系统,中英文混着写的情况也比较常见,偶尔可能会有这种需求,其实这种做法我已经用了很久了。
只是今天偶然发现有些技术论坛中有人吐槽C++区分一段字符串中是否存在中文比其他语言复杂太多,故分享一下我一般的做法:
char buffer[200]{ "\0" }, engBuf[200]{"\0"};
while (true)
{
std::cin.getline(buffer, 200);
if (sscanf(buffer, "%[ !-~]%s", engBuf, buffer) != 1)
{
printf("has non eng\n\n");
}
else
{
printf("eng\n\n");
}
}
复制代码
什么嘛,我也是能写的蛮简单的嘛(BGM on)
刚刚重新摸索了下发现能写的更简单,已更新
不过还是要注意,虽然借助于连字符'-'的方括号的格式匹配作为scanf一族函数的扩展十分常见,但是其实它并不在C标准要求中【
引用
】,
所以对于某些特殊编译器,必要情况下可能还是需要挨个把字符打进方括号里。
作者Author:
Graphite
时间:
2025-4-9 14:30
本帖最后由 Graphite 于 2025-4-9 14:44 编辑
bool is_ascii(char c) {
return ((uint8_t)(c) < 128);
}
复制代码
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3