C++ 如何在输入特定单词时终止字符串输入?

C++ 如何在输入特定单词时终止字符串输入?,c++,C++,我试图在给定字符串中打印丢失的字母表。输入规范是在用户输入endpara时结束字符串输入。在我当前的代码中,它只存储字符串中的第一个单词,即使输入在输入“endpara”后终止。如果我进去,狐狸就会跳过a。endpara,它只在字符串中存储fox。如何在endpara之前存储整个字符串 #include<bits/stdc++.h> #include <iostream> #include <string> #include <

我试图在给定字符串中打印丢失的字母表。输入规范是在用户输入endpara时结束字符串输入。在我当前的代码中,它只存储字符串中的第一个单词,即使输入在输入“endpara”后终止。如果我进去,狐狸就会跳过a。endpara,它只在字符串中存储fox。如何在endpara之前存储整个字符串

#include<bits/stdc++.h> 
    #include <iostream>
    #include <string>
    #include <sstream>
    using namespace std; 
    const int MAX_CHAR = 26; 

    string missingChars(string str) 
    { 
        bool present[MAX_CHAR] = {false}; 
        for (int i=0; i<str.length(); i++) 
        { 
            if (str[i] >= 'a' && str[i] <= 'z') 
                present[str[i]-'a'] = true; 
            else if (str[i] >= 'A' && str[i] <= 'Z') 
                present[str[i]-'A'] = true; 
        } 
        string res = ""; 
        for (int i=0; i<MAX_CHAR; i++) {
            if (present[i] == false) 
                res.push_back((char)(i+'a'));} 
         for(int i=0;i<=res.length();i++) { 
            if(res[i]>=97 && res[i]<=122)
            {
                res[i]=res[i]-32;
            }
        }
        return res; 
    } 

    int main() 
    { 

       string input;
       string line;
        while (getline(cin, input) && input != "endpara") {
        istringstream is(input);
        is>>input;
        if(missingChars(input)== ""){
            cout<<"NONE";
        }
        else{
            cout<<missingChars(input);
        }
        }
        return 0; 
    } 

问题是在循环中只接受一次输入:

istringstream is(input);
is>>input;
您需要在字符串流中循环,直到流结束:

istringstream is(input);
while(is>>input) {
    if(...) {
        // ...
    } else {
        // ...
    }
   // etc
}

推荐阅读:检查整行文字是否与该单词完全一致。您可能想看看std::string::find。或者在你继续之前划定这条线。顺便说一句,尽量少用你的例子——我们不需要知道什么是遗漏来帮助你。干脆省略那部分。