C++ 代码只是冻结,不输出任何东西

C++ 代码只是冻结,不输出任何东西,c++,C++,所以我有一个input.txt文件,其中包含英语和德语单词 例如,布赫图书、贝雷希地区等也包括在内 我必须编写一个小翻译器的代码,所以如果输入book,代码必须输出buch,反之亦然 我已经将英语编码为德语输出,但由于某种原因,当我尝试将德语转换为英语时,它不会输出任何内容 #include <iostream> #include <fstream> #include <string> #include <algorithm> #include &

所以我有一个input.txt文件,其中包含英语和德语单词 例如,布赫图书、贝雷希地区等也包括在内 我必须编写一个小翻译器的代码,所以如果输入book,代码必须输出buch,反之亦然 我已经将英语编码为德语输出,但由于某种原因,当我尝试将德语转换为英语时,它不会输出任何内容

#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <math.h>
using namespace std;



int main() {
    ifstream ifs("input.txt");
    ofstream ofs("history.txt", ifstream::app);
    int a, b, c = 0, j;
    string m, l, p[100];
    for (a = 0; a < 50; a++) {
        ifs >> p[a];
        m = p[a];
    }
    cin >> l;
    for (a = 0; a < 50; a++) {
        if (l == p[a].substr(l.size() + 1, p[a].size())) {  //here's the problem
            cout << p[a].substr(0, p[a].size() - l.size() + 1);

        }
        if (l == p[a].substr(0, l.size())) { //english to german
            cout << p[a].substr(l.size() + 1, p[a].size());
            ofs << l << "-" << p[a].substr(l.size() + 1, p[a].size());
            ofs << endl;
        }
    }

我用了另一种方法

for (a = 0; a < 50; a++) {
        pos = p[a].find("-");
        if (l == p[a].substr(pos + 1)) {
            pos = p[a].find("-");
            cout << p[a].substr(0, pos);
也不知怎么忘记C++编译器是区分大小写的。
愚蠢的我

lol我开始认为解决方案是非常明显的argh是否尝试使用gdb?刚开始编写代码时,gdb总是你最好的朋友,如果你以前犯过错误,是的。否则,你需要做一些阅读。例如,在p[a].substrl.size+1,p[a].size中,如果l大于p[a],该怎么办?应该会有例外。但是如果第二个参数太大怎么办?