Мне нужно подсчитать слова в строковой переменной, посчитав пробелы. Также мне нужно подсчитывать предложения, подсчитывая точки. Я использую функцию-член в(), чтобы получить символ и сравнить его, но по какой-то причине мой компилятор 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 символ *')
Оба ошибки находятся на линии "если (myData.at (я) ==" ")"
Что делать, если рядом друг с другом присутствуют два или более символа пробела? Счетные пространства - это плохой способ подсчета количества слов. Почему бы просто не подсчитать количество слов? – PaulMcKenzie
Это задание, и мой профессор явно попросил использовать пробелы и точки @PaulMcKenzie – Marina
Это действительно не отвечает на мой вопрос. Что делать, если между словами есть два или более пробелов? Что делать, если данные «Joe [sp] [sp] [sp] Smith'? Сколько слов есть? 3? – PaulMcKenzie