Строки вводятся не ожидаемым образом

117
22 января 2020, 01:10

У меня есть код, в котором я ввожу число N, а потом просто ввожу в цикле по N строки, состоящие из пробелов, цифр, скобок и дефисов. Потом я хочу ввести число M, и хочу ввести в цикле по М таким же способом строки. Но проблема в том, что когда я ввожу это все дело, у меня программа не работает нужным образом. Абсолютно не понимаю в чем проблема. Не могли бы вы объяснить, просто после ввода строк результат, который я ожидаю, не выводится на экран.

using namespace std;
int main() {
    int N;
    cin >> N;
    vector<string> buffer;
    for(int i = 0; i < N; ++i){
        string temp;
        getline(cin, temp);
        int n = temp.size();
        string temp2 = "";
        for(int j = 0; j < n; ++j){
            if(temp[j] == '-' || temp[j] == ' ' || temp[j] == '+' || temp[j] == '(' || temp[j] == ')')
                continue;
            temp2 += temp[j];
        }
        buffer.push_back(temp2);
    }
    vector<string> ret(buffer.size());
    int M;
    cin >> M;
    for(int i = 0; i < M; ++i) {
        string temp;
        getline(cin, temp);
        int n = temp.size();
        string current = "";
        for(int j = 0; j < n; ++j){
            if(temp[j] == '+' || temp[j] == '(' || temp[j] == ')' || temp[j] == ' '){
                continue;
            }
            if(!(temp[j] >= '0' && temp[j] <= '9') && temp[j] != 'X'){
                break;
            }
            current += temp[j];
        }
        for(int k = 0; k < buffer.size(); ++k){
            if(buffer[k].size() != current.size())
                continue;
            int len = current.size();
            int flag = 0;
            for(int r = 0; r < len; ++r){
                if(current[r] == buffer[k][r] || current[r] == 'X')
                    flag++;
            }
            if(flag == len){
                ret[k] = temp;
            }
        }
    }
    for(int i = 0; i < ret.size(); ++i){
        cout << ret[i] << endl;
    }
}
READ ALSO
c++ различие операторов?

c++ различие операторов?

Подскажите, чем отличаются данные фрагменты кода

129
Возврат из потока POSIX

Возврат из потока POSIX

Нужно вернуть данные из потоковой функции:

110
Как рендерить svg в gtkmm3, cairomm?

Как рендерить svg в gtkmm3, cairomm?

В C можно рендерить svg в cairo с помощю librsvg, чем рендерить svg в gtkmm? cairomm? или как засунуть в cairomm GdkPixbuf*?

114
Проверка подключения к MySQL (Java)

Проверка подключения к MySQL (Java)

Занимаюсь разработкой собственной мини-утилиты для работы с MySQLКак я могу проверить подключение к указанному хосту (по логину и паролю) без...

118