Я не правильно сформулировал.
Значение-то присваивается, только программа после этого виснет.
tr - это переводчик.
str - переводимое слово.
Код: Выделить всё
void translator (char* trans,char* text, char* result) {
int i = 0, len, pos=0;
string line;
string tr[10][2], str, rep = "";
string tmp, tmp2;
int found;
ifstream imyfile (trans);
ifstream imyfile_txt (text);
ofstream omyfile (result);
/*заполняем массив переводчика*/
if (imyfile.is_open())
{
while ( imyfile.good() )
{
getline (imyfile,line);
tr[i][1] = line.substr(line.find(' ')+1);
tr[i][0] = line.assign(line, 0, line.find(' '));
i++;
}
imyfile.close();
};
sort_str(tr); //sakarto tulkoshanas masivu
/*переводим текст по-строчно*/
if (imyfile_txt.is_open())
{
while ( imyfile_txt.good() )
{
getline (imyfile_txt,line);
line = line+" ";
for (i=0; i != len; i++)
{
if (line.at(i) != ' ') str = str + line.at(i); //слово до пробела
else {
pos = line.find(str);
-------------------------------------------------------------------------------------------------------------------------------------------
for (int j = 0; tr[j][0] != ""; j++) //поиск слова в словаре
{
if (j == 0 && str < tr[4][0]) j = 0;
else if (j == 0 && str >= tr[4][0]) j = 4; //Проблема
tmp = tr[j][0];
tmp2 = str;
transform(tmp.begin(), tmp.end(), tmp.begin(), ::toupper);
transform(tmp2.begin(), tmp2.end(), tmp2.begin(), ::toupper);
if (tmp == tmp2) rep = tr[j][1];
cout << rep << endl;
};
-------------------------------------------------------------------------------------------------------------------------------------------
if (rep == "") rep = '[' + str + ']'; //если слово не найдено, заменяем его на [слово]
line.replace(pos, str.length(), rep); //заменяем переводимое слово в строке
i = pos + rep.length();
str = "";
}
len = line.length();
rep = "";
};
if (omyfile.is_open())
{
line = line.substr(0, len - 1);
omyfile << line << endl; /записываем переведённую строку
}
system ("pause");
}
}
else cout << "Unable to open file";
omyfile.close();
imyfile_txt.close();
for (i = 0; i < 8; i++)
cout << tr[i][0] << ' '<< tr[i][1] << endl;
};