我需要通过计算空格来计算字符串变量中的单词。我还需要通过计算点数来计算句子。我使用()中的成员函数来获取一个字符并进行比较,但由于某种原因,我的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)指针和整数之间的比较('int'和'const char *')
这两个错误都在行“if(myData.at(i)==”“)”
如果两个或多个空格字符相邻,会怎么样?计算空间是计算单词数量的一种很不好的方法。为什么不计算单词的数量呢? – PaulMcKenzie
这是一个任务,我的教授明确要求使用空格和点@PaulMcKenzie – Marina
这并不真正回答我的问题。如果单词之间有两个或更多空格会怎么样?如果数据是“Joe [sp] [sp] [sp] Smith”呢?那里有几个词? 3? – PaulMcKenzie