C++ 如何在输入特定单词时终止字符串输入?
我试图在给定字符串中打印丢失的字母表。输入规范是在用户输入endpara时结束字符串输入。在我当前的代码中,它只存储字符串中的第一个单词,即使输入在输入“endpara”后终止。如果我进去,狐狸就会跳过a。endpara,它只在字符串中存储fox。如何在endpara之前存储整个字符串C++ 如何在输入特定单词时终止字符串输入?,c++,C++,我试图在给定字符串中打印丢失的字母表。输入规范是在用户输入endpara时结束字符串输入。在我当前的代码中,它只存储字符串中的第一个单词,即使输入在输入“endpara”后终止。如果我进去,狐狸就会跳过a。endpara,它只在字符串中存储fox。如何在endpara之前存储整个字符串 #include<bits/stdc++.h> #include <iostream> #include <string> #include <
#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。或者在你继续之前划定这条线。顺便说一句,尽量少用你的例子——我们不需要知道什么是遗漏来帮助你。干脆省略那部分。