计算字符串

时间:2017-03-31 22:08:40

标签: c++ string

我正在尝试编写一个程序,当给出输入时,会吐出多少个单词连字符,以及有多少单词在引号中。一些样本输入和输出如下:

输入句子:

乔喜欢准科幻书籍如“黑暗的左手”和 “怪人”

带连字符的单词:

1

在引号词

5

输入句子:

“插口是快乐”

带连字符的单词:

0

在引号单词:

3

输入句子:

这是一个“连字符字”在引号

带连字符的单词:

1

在引号单词:

1

到目前为止,我一直无法使用它,并且我不确定我的方法是否正确。这是我到目前为止所写的内容:

#include <iostream>
#include <string>
using namespace std;

int main(){
    string inistr, substr, quotestr;
    getline(cin, inistr);
    int hyphen=0, firstQuote, quote=0, firstHyphen;

while(inistr.length() > 0){
    if(inistr.find_first_of('"') == string::npos && inistr.find_first_of('-') == string::npos){
        inistr = "";

    }
    else if((inistr.find_first_of('"') != string::npos && inistr.find_first_of('-') == string::npos) || (inistr.find_first_of('"') != string::npos && (inistr.find_first_of('-')>inistr.find_first_of('"')))){
        firstQuote = inistr.find("\""); 

        substr = inistr.substr(inistr.find_first_of("\""), inistr.find("\"",firstQuote +  1)+1);
        inistr = inistr.substr(inistr.find("\"",firstQuote+1)+1);

        if(substr.find_first_of("-") != string::npos){
            hyphen++;
            quote++;
        }
        if(substr.find(' ') == string::npos && substr.find("-") == string::npos){
            quote = 1;
        }
        else if(substr.find(' ') != string::npos){
            quote = 1;
            for(unsigned int i = 0; i < substr.length(); i++){
                if(substr.at(i) == ' '){
                    quote++;
                }
            }
        }
    }
    else if((inistr.find_first_of('-') != string::npos && inistr.find_first_of('"') == string::npos) || (inistr.find_first_of('-') != string::npos && (inistr.find_first_of('"')>inistr.find_first_of('-')))){
    firstHyphen = inistr.find_first_of('-');
    substr = inistr.substr(firstHyphen, inistr.find(' ', firstHyphen + 1));
    inistr = inistr.substr(inistr.find(substr) + substr.length(), ' ');
    hyphen++;
    }
}

    cout << "Words with hyphens:" << hyphen << endl;
    cout << "Words in quotes:" << quote << endl;
    return 0;
}

这是我在第一个例子中得到的输出。

乔喜欢像“黑暗的左手”和“科学怪人”这样的科幻书籍

带连字符的单词:1

引号中的单词:3

0 个答案:

没有答案