如何计算字符串变量中的空格

时间:2017-02-10 20:50:30

标签: c++ string

我需要通过计算空格来计算字符串变量中的单词。此外,我需要通过计算点数来计算句子。我在()处使用成员函数来获取一个字符并进行比较,但由于某种原因,我的Xcode编译器不会让我这样做。 这是我的头文件:

#ifndef SPEECHANALYST_H
#define SPEECHANALYST_H

#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;

namespace marina
{
class SpeechAnalyst : public string
{
public:
SpeechAnalyst () : std::string()
{};
void clear( ); // resets everything...
void addData( char * stuff );
void addStringData( std::string stuff );

int getNumberOfWords( ) const;
int getNumberOfSentences( ) const;

friend ostream& operator << ( ostream& outs, const SpeechAnalyst & sa );  //         prints the data seen so far!

private:
std::string myData;


};
}
#endif /* SpeechAnalyst_h */

这是我的实施文件:

 #include "SpeechAnalyst.h"
 #include <stdio.h>
 #include <iostream>
 #include <string>
 using namespace std;


namespace marina
{
   void SpeechAnalyst::clear( )
   {
     myData.clear();
   }



    void SpeechAnalyst::addStringData( std::string stuff )
   {
      myData += stuff;

   }

   void SpeechAnalyst::addData( char * stuff )
   {
    string line;
    line=stuff;
    myData += line;
    }

    int SpeechAnalyst::getNumberOfWords( ) const
    {
    int i,words=0,sentence=0;
    for (i=0; i<myData.length(); ++i)
       {
        if (myData.at(i) == " ")
            words++;
        }
      return words;
    }


    }

所以编译器看到的错误是: 1)未指定与字符串文字进行比较的结果(改为使用strncmp) 2)指针和整数之间的比较(&#39; int&#39;和&#39; const char *&#39;)

这两个错误都在第34行;如果(myData.at(i)==&#34;&#34;)&#34;

2 个答案:

答案 0 :(得分:2)

我认为你的解决方案并不遥远。

试试这个:

if (myData.at(i) == ' ')

而不是你的:

if (myData.at(i) == " ")

使用“”你创建一个字符数组而不是''创建一个字符。

答案 1 :(得分:0)

int number_of_spaces = 0;
int number_of_dots = 0;
for (auto& iter : input_text)
{
    if (iter == ' ')
    {
        number_of_spaces++;
    }
    else if (iter == '.')
    {
        number_of_dots++;
    }
}

此代码计算空格和点的数量。它并不像tab新行或回车一样计算。