У меня возникли проблемы с этой функцией-членом класса. По сути, он предназначен для перевода слов на другой язык с сохранением той же пунктуации и пробелов. lineToTranslate — входной аргумент, представляющий собой массив слов, пробелов и знаков препинания. Каждое слово в нем должно быть отдельно взято из строки и переведено с помощью функции dict.translate(). Это работает правильно.
Однако проблема в том, что при наличии нескольких новых строк выводится предыдущая строка слов. Кроме того, пробелы не полностью обслуживаются. Если в предложении более одного пробела, выводится только один пробел. Любая идея о том, где я могу ошибаться? Любая помощь будет действительно оценена.
Введен обновленный код с исправленным большинством ошибок. Единственная проблема, с которой я столкнулся сейчас, заключается в том, что пробелы не добавляются по мере необходимости между словами. Там, где есть 2 пробела подряд, вводится один пробел, а там, где есть один пробел, ничего не вводится и слова выводятся следующим образом.
int len = strlen(lineToTranslate);
string strComplete = "";
const char *cs;
for (int x = 0; x < len; x++)
{
if (!isspace(lineToTranslate[x]))
{
char temp[MAX_WORD_LEN];
int j = 0;
while(lineToTranslate[x] != ' ' && lineToTranslate[x] != '\t' && lineToTranslate[x] != '\n')
{
temp[j] = lineToTranslate[x];
x++;
j++;
}
temp[j] = '\0';
char returned[MAX_WORD_LEN];
if(temp[0] != '\0')
{
dict.translate(returned, temp);
strComplete = strComplete + returned;
}
}
else
{
strComplete = strComplete + lineToTranslate[x];
x++;
}
}
cs = strComplete.c_str();
strcpy(translatedLine, cs);