2017-02-10 25 views
-1

我需要通过计算空格来计算字符串变量中的单词。我还需要通过计算点数来计算句子。我使用()中的成员函数来获取一个字符并进行比较,但由于某种原因,我的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)==”“)”

+1

如果两个或多个空格字符相邻,会怎么样?计算空间是计算单词数量的一种很不好的方法。为什么不计算单词的数量呢? – PaulMcKenzie

+0

这是一个任务,我的教授明确要求使用空格和点@PaulMcKenzie – Marina

+0

这并不真正回答我的问题。如果单词之间有两个或更多空格会怎么样?如果数据是“Joe [sp] [sp] [sp] Smith”呢?那里有几个词? 3? – PaulMcKenzie

回答

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++; 
    } 
} 

此代码计算空白和点的数量。它不会像选项卡换行或回车。

1

我不认为你离你自己的解决方案很遥远。相反

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

你的:

试试这个

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

随着 “” 你要创建角色对应的是 '' 它创建一个字符数组。

相关问题