Em vẫn là newbie nên ko biết tại sao code mình lại bị exception ạ
Đây là code của em:
#include <iostream>
#include <fstream>
#include <string>
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include <codecvt>
#include <locale>
#pragma warning (disable:4996)
using namespace std;
int wmain() {
wofstream VNo ("VN.txt", ios::app);
int ngu, dumb;
ngu = _setmode(_fileno(stdin), _O_WTEXT);
dumb =_setmode(_fileno(stdout), _O_WTEXT);
locale loc(locale(), new codecvt_utf8<wchar_t>);
wifstream out(L"VN.txt");
wifstream ENi(L"EN.txt", ios::in);
wofstream ENo(L"EN.txt", ios::app);
wifstream ENi2(L"EN2.txt", ios::in);
wofstream ENo2(L"EN2.txt", ios::app);
wfstream so(L"Num.txt", ios::in);
int num;
so >> num;
so.close();
wofstream so2(L"Num.txt");
int quit = 0;
wstring EN;
wstring VN;
VNo.imbue(loc);
while (quit != 5) {
wcout << L"Pick a number:" << endl;
wcout << L"1. Add a word" << endl;
wcout << L"2. Translate a word using data from this program" << endl;
wcout << L"3. Add the missing meaning for a word" << endl;
wcout << L"4. Test your memory with random words from this dictionary" << endl;
wcout << L"5. Exit" << endl;
wcin >> quit;
wcin.ignore(numeric_limits<streamsize>::max(), '\n');
switch (quit) {
case 1: {
wcout << L"Please type the word you want to add:" << endl;
getline(wcin, EN);
num++;
wcout << L"Please type its meaning, if you have no idea, please type 'idk'" << endl;
getline(wcin, VN);
if (VN != L"idk") {
ENo << EN << endl;
VNo << VN << endl;
}
else {
ENo2 << EN << endl;
}
ENi.seekg(ios::beg);
ENi2.seekg(ios::beg);
ENo.seekp(ios::beg);
ENo2.seekp(ios::beg);
break;
}
case 2: {
wcout << L"What word would you like to translate?" << endl;
getline(wcin, EN);
wstring EN2;
wstring VN2;
int check = 0;
while (!ENi.eof()) {
ENi >> EN2;
out.imbue(loc); //đọc TV
getline(out, VN2);
if (EN2 == EN) {
check = 1;
break;
}
}
if (check == 1)
wcout << L"According to this dictionary, the meaning of this word is: " << VN2 << endl;
if (check == 0) {
int mode;
wcout << L"This word haven't been added to your dictionary yet" << endl;
wcout << L"Add it now?" << endl;
wcout << L"1. Yes" << endl << L"2. No" << endl;
wcin >> mode;
switch (mode) {
case 1: {
ENo << EN;
wcout << L"Please type its meaning, if you have no idea, please type 'idk'" << endl;
getline(wcin, VN);
if (VN != L"idk") {
ENo << EN << endl;
VNo << VN << endl;
}
else {
ENo2 << EN << endl;
}
}
case 2: {
break;
}
}
}
ENi.seekg(ios::beg);
ENi2.seekg(ios::beg);
ENo.seekp(ios::beg);
ENo2.seekp(ios::beg);
break;
}
case 3: {
ENi2.seekg(ios::beg);
wcout << L"Preparing..." << endl << L"Please wait..." << endl;
wstring EN2;
wstring VN2;
int check = 0;
int dem = 0;
if (ENi2.end) {// kiếm cách đi
wcout << L"There's no words without meanings in your dictionary" << endl;
break;
}
else {
while (!ENi2.eof()) {
ENi2 >> EN2;
dem++;
}
wstring** idk = new wstring * [dem];
for (int i = 0; i < dem; i++) {
idk[i] = new wstring;
}
if (dem != 0) {
ENi2.seekg(ios::beg);
dem = 0;
while (!ENi2.eof()) {
ENi2 >> idk[dem][0];
dem++;
}
}
wcout << L"Please add the meaning of these below words, if you still have no idea, please type 'idk'" << endl;
for (int i = 0; i < dem; i++) {
wcout << idk[i][0] << ":" << endl;
getline(wcin, VN);
if (VN != L"idk") {
VNo << VN << endl;
num++;
ENo << idk[i][0];
delete idk[i];
}
}
wfstream ENo3(L"EN2.txt", ios::out);
for (int i = 0; i < dem; i++) {
ENo3 << idk[i][0];
}
}
ENi.seekg(ios::beg);
ENi2.seekg(ios::beg);
ENo.seekp(ios::beg);
ENo2.seekp(ios::beg);
break;
}
case 4: {
wcout << L"This feature will be available in the next update";
break;
}
default: {
break;
}
}
}
so2 << num;
return 0;
}
Ý tưởng của em là lm 1 app để nhập và dịch các từ tiếng anh và nghĩa của nó vào các file “EN.txt” và “VN.txt” và có thể bổ sung nghĩa cho các từ tiếng anh người dùng tạm thời chưa biết nghĩa. Vì cần phải nhập xuất được tiếng việt nên em có lên mạng tìm hiểu và biết cách dùng header codecvt. Sau khi em code xong thì VS 2019 của em không báo lỗi hay warning gì, nhưng khi bắt đầu Debug thì bị như này:
Do là newbie nên em thật sự không biết phần nào bị lỗi, mong các tiền bối hãy chỉ giáo ạ
Đây là các header em sử dụng ạ: