在 C++ 中使用字符串,分析字符并通过类创建功能
Posted
技术标签:
【中文标题】在 C++ 中使用字符串,分析字符并通过类创建功能【英文标题】:Playing with strings in C++, analysing characters and creating functionality through a class 【发布时间】:2013-04-09 09:39:17 【问题描述】:我一直在玩这本我不久前拿起的 C++ 书,并进入了字符串部分,(我正在玩类)。到目前为止,我不得不使用 for 循环和一些基本功能的东西。现在我正试图弄清楚如何分析字符串中的某些内容。 这本书要求我尝试扫描一个字符串,看看它有多长,并计算字符串中有多少个元音。另外,它希望我根据它的 ASCII 数字来计算字符串并将其相加。最后一个有点奇怪,但如果它说有可能,那我该争论谁?
我在网上看到一些帖子说有人试图扫描大小写字母,所以我想我也不妨试试。我也在尝试看看类是如何工作的,这似乎是一个很好的方式来玩这个过程。
我认为我已经降低了类结构,至少就默认构造函数和函数而言(对于重载的构造函数以及它们所扮演的角色有点不确定)
这本书展示了一些例子,但诚然,有时它对我来说没有多大意义。
就代码而言,我一直在尝试
string usrWord;
string vowel = "aeiou";
string::size_type vowel2;
vowel2 = usrWord.find(vowel,0);
string::size_type wordL;
wordL = usrWord.length();
cout << "This has " << wordL << " characters in the string, and " << vowel2 << " vowels. << endl;
我不知道怎么做 ASCII 的事情,我想知道这是否足以检查字符大小? (就像我在寻找元音一样)。
【问题讨论】:
阅读更多关于std::string::find
的信息,它不会搜索字符串中的一组字符,而是搜索子字符串。
搜索子串是什么意思?
子字符串是从较大字符串中提取的较小字符串。例如,假设您有字符串"Hello world!"
,那么您有多个子字符串,如"Hello"
或"world"
,以及原始字符串中连续字母的任意组合(包括(但不限于到)"H"
、"He"
、"Hell"
、"l"
、"ll"
、"lo wo"
等)要搜索这样的子字符串,您可以使用 std::string::find
。
【参考方案1】:
std::string str ("Find the vowel");
unsigned found = str.find_first_of("aeiou");
while (found!=std::string::npos)
cout<<"\n found "<< str[found];
found=str.find_first_of("aeiou",found+1);
【讨论】:
好的,所以你创建了一个名为 str 的字符串的实例,并将 Find the vowel 传递给它,我得到了。未签名的有什么用?那不是刺痛或焦吗?我已经阅读了有关 find_first_of 的信息,但这不只是寻找一个或第一个,无论您试图找到什么?这就是 while 循环中 +1 的用途,只要未达到 npos(我假设字符串的结尾),然后继续查找,即使您找到 1 个元音? 这是一个问题。我正在玩这个来看看它是如何工作的,我将它设置为接受用户输入的字符串,但它只分析句子中的第一个单词。你怎么解决这个问题?我认为字符串应该能够超过第一个单词 @MichellePeoples 如果您使用流输入运算符>>
读入std::string
,则输入运算符将在空格处停止(即空格、制表符、换行符)。所以字符串的输入运算符只读取单词。要阅读整行,例如std::getline
.
效果很好!我在我的主要用户输入点中使用了 in。这是在函数中使用它的一种方式,以便它始终查看整行,还是只是过度使用它?
您将如何计算具有实际数字的元音,而不是仅打印找到的元音?以上是关于在 C++ 中使用字符串,分析字符并通过类创建功能的主要内容,如果未能解决你的问题,请参考以下文章