我需要通过计算空格来计算字符串变量中的单词。此外,我需要通过计算点数来计算句子。我在()处使用成员函数来获取一个字符并进行比较,但由于某种原因,我的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;
答案 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新行或回车一样计算。