打电话给功能后,为什么我会陷入无限循环中



我应该制作一个接收两个参数的函数:句子( std::string(和一堆短语( std::vector<std::string>>(。现在,对于矢量中包含的句子中的所有单词,我需要使它们的回文并将其粘在一起,例如编译 -> compileElipmoc。我还需要确保在按下两个Enter之前,才能提供输入。这个问题在调用该功能后发生,我似乎陷入了无限的循环中。为什么我要获得这个无限的循环?

#include <iostream>
#include <vector>
#include <string>
typedef std::vector<std::string> Vektor; 
typedef std::string String;
void ReverseString(String &s1)
{
char temp(0);
for(int i(0); i < s1.size()/2; i++) {
    temp = s1.at(i);
    s1.at(i) = s1.at(s1.length()-1-i);
    s1.at(s1.length()-1-i) = temp;
}
}
void CreatePalindrome(String s, Vektor v)
{
bool white_space(true);
bool go_on(false);
String compare;
for(int i(0); i < s.size(); i++) {
    for(;;) {
        if(s.at(i) == 'n' || i == s.size()-1) {
            go_on == true;
            break;
        }
        compare+=s.at(i);
    }
    if(go_on) {
        for(int j(0); j < v.size(); j++) {
            if(compare == v.at(j)) {
                ReverseString(v.at(j));
                if(i != s.size()-1) v.at(j)+=' ';
                s.insert(i, v.at(j));
            }
        }
    }
    compare.clear();
}
}
int main ()
{
String sentence, phrase;
Vektor v1;
char character(0);
std::cout << "Enter your sentence: ";
std::getline(std::cin, sentence);
std::cout << "Enter phrases: ";
for(;;) {
    character = std::cin.get();
    if(character == 'n') break;
    for(;;) {
        phrase.push_back(character);
        character = std::cin.get();
        if(character == 'n') break;
    }
    v1.push_back(phrase);
    phrase.clear();
}
CreatePalindrome(sentence, v1);
std::cout << "After the transformation, the sentence is: " << sentence;
return 0;
}
for(;;) {
    if(s.at(i) == 'n' || i == s.size()-1) {
        go_on == true;
        break;
    }
    compare+=s.at(i);
}

您唯一的出路是通过该if,但是您既不修改si,因此您永远不会断裂!

最新更新