C++ 当存在“”时输出重复行
C++ output duplicating lines when there is a ' '
我在使用类的这个成员函数时遇到了一些问题。 基本上,它旨在将单词翻译成不同的语言,同时保持相同的标点符号和空格。 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] = ' ';
char returned[MAX_WORD_LEN];
if(temp[0] != ' ')
{
dict.translate(returned, temp);
strComplete = strComplete + returned;
}
}
else
{
strComplete = strComplete + lineToTranslate[x];
x++;
}
}
cs = strComplete.c_str();
strcpy(translatedLine, cs);
当你的for
循环迭代spaces
或punctuation
时,这些 dnt 不符合进入的条件,而循环你仍在执行strComplete = strComplete + returned;
,它在没有任何原因地在中间附加