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