好的,我在 StackOverflow 上搜索了如何检查字符串是空的还是空格。但是,它只适用于 ANSI 字符串。我怎样才能让它与 a 一起工作wstring
?
这是代码:
#include <string>
using namespace std;
//! Checks if a string is empty or is whitespace.
bool IsEmptyOrSpace(const string& str) {
string::const_iterator it = str.begin();
do {
if (it == str.end())
return true;
} while (*it >= 0 && *it <= 0x7f && isspace(*(it++)));
// One of these conditions will be optimized away by the compiler.
// Which one depends on whether the characters are signed or not.
return false;
}
我的第一个想法是更改isspace(*(it++))
为iswspace(*(it++))
,但之前的两个条件仅适用于 ASCII,对吗?到目前为止,这是我尝试将函数调整为wstring
's 的内容:
bool IsEmptyOrSpaceW(const wstring& str) {
String::const_iterator it = str.begin();
do {
if (it == str.end())
return true;
} while (*it >= 0 && *it <= 0x7f && iswspace(*(it++)));
// One of these conditions will be optimized away by the compiler.
// Which one depends on whether the characters are signed or not.
// Do I need to change "*it >= 0 && *it <= 0x7f" to something else?
return false;
}
我的方法接近正确吗?无论哪种方式,我怎样才能实现这个IsEmptyOrSpace()
函数的 Unicode 版本?
编辑:
好的,如果您需要知道为什么要进行*it >= 0 && *it <= 0x7f
测试,我不能告诉您,因为我不知道。我从这个问题的答案中得到了函数的代码:C++ 检查字符串是空格还是空
所以让我从头开始,一般来说,我如何检查 awstring
是空的还是只是空格?