C++如何确定字符是否是单词中的第一个字符
C++ how to determine if char is first char in a word
这看起来应该很简单,但我似乎无法理解。我正在尝试编写一个函数,如果pos位置的字符是单词的第一个字符,该函数将返回true。在这种情况下,单词被定义为任何字母数字字符串。
这是我的最新尝试:
bool wordBeginsAt (const std::string& message, int pos)
{
string temp;
int x;
for (x=pos;isAlphanumeric(message[x]==true);x++)
{
temp[x] = message[x];
}
if (temp[pos]!=0)
{
return false;
}
else
return true;
}
bool isAlphanumeric (char c)
{
return (c >= 'A' && c <= 'Z')
|| (c >= 'a' && c <= 'z')
|| (c >= '0' && c <= '9');
}
根据您的定义,如果字符是字母数字,则它是单词中的第一个字符,它是字符串中的第一位字符,或者它之前的字符不是字母数字。
嗯,isAlphanumeric(message[x]==true)
应该是isAlphanumeric(message[x])==true
。但是您的代码还有其他严重的问题,比如写超出temp
的范围,并且循环逻辑都是错误的,所以我认为最好重新开始。
你需要做的是:
- 检查字符是否为字母数字
- 检查前一个字符是否为,或者是否没有前一个角色
不需要循环或变量。当CCD_ 4;如果您正在查看第一个字符,则不希望检查前一个字符。
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 如何仅读取文本文件中的第一个值
- 在C++中,如何在第一个"system()"结束后执行第二个"system()"?
- 查找不在标准中的第一个值::设置<int>最小-最大值
- C++:忽略第一个 cin.ignore 之后的输入
- C++:使用另一个字符将一个字符大写
- 我可以得到一个字符 * 到一个 std::sregex_iterator 匹配 str() 吗?
- 在C++中打印多个矢量的第一个值
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- C++第一个cout将不会打印
- 我们可以在第一个else-if条件结束后使用另一个else-if条件吗
- OpenGL:第二个VBO破坏了第一个VBO
- 将字符从一个字符串简单分配到另一个字符串不起作用
- 为什么第一个Dynamic_cast没有投射到基类?
- 将第一个n个字符复制到std :: string
- 一个奇怪的字符出现在我的字符数组的第一个
- 当一长串字符传递给第一个 cin 时,为什么不暂停第二个 cin 上的输入?
- 哪个字符是 c++ 中 4 个字符中的第一个
- 从 std::string 中提取(第一个)UTF-8 字符