在 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 如果您使用流输入运算符&gt;&gt; 读入std::string,则输入运算符将在空格处停止(即空格、制表符、换行符)。所以字符串的输入运算符只读取单词。要阅读整行,例如std::getline. 效果很好!我在我的主要用户输入点中使用了 in。这是在函数中使用它的一种方式,以便它始终查看整行,还是只是过度使用它? 您将如何计算具有实际数字的元音,而不是仅打印找到的元音?

以上是关于在 C++ 中使用字符串,分析字符并通过类创建功能的主要内容,如果未能解决你的问题,请参考以下文章

如何在C++中 统计多行文本中的行数、单词数及字符数

创建一个简单的 C++ 字符串类

通过一个自定义字符串类学习一下C++中的BIG THREE

通过一个自定义字符串类学习一下C++中的BIG THREE

C++--标准库 字符串类

在 C++ 中使用字符串到类查找表来实例化类