我想编写一个函数,如果给定的字符是俄语元音,则返回true.但我得到的结果对我来说很奇怪.这是我到目前为止所得到的:
#include <iostream>
using namespace std;
bool is_vowel_p(char working_char)
// returns true if the character is a russian vowel
{
string matcher = "???×??????";
if (find(matcher.begin(), matcher.end(), working_char) != matcher.end())
return true;
else
return false;
}
void main()
{
cout << is_vowel_p('?') << endl; // russian vowel
cout << is_vowel_p('?') << endl; // russian consonant
cout << is_vowel_p('D') << endl; // latin letter
}
Run Code Online (Sandbox Code Playgroud)
结果是:
1
1
0
Run Code Online (Sandbox Code Playgroud)
对我来说有什么奇怪的.我期待以下结果:
1
0
0
Run Code Online (Sandbox Code Playgroud)
似乎有某种内部机制我还不知道.我起初对如何修复此功能以使其正常工作感兴趣.第二,那里发生了什么,我得到了这个结果.
string并且char只保证代表基本字符集中的字符 - 不包括西里尔字母.
使用wstring和wchar_t,并L在字符串和字符文字之前添加以指示它们使用宽字符,应该允许您使用这些字母.
此外,为了便携性,您需要包含<algorithm>for find,并给出main返回类型int.