C ++在字符数组中的前一个字符后查找字符

时间:2014-05-07 02:03:53

标签: c++ arrays find character

我正在研究一个在两个多项式之间执行运算的项目。多项式从文本文件中读入,我将其命名为" functions.txt",并且格式为"(2 * x ^ 2 + 5 * x ^ 4-3 * x )+(6 * X + 2 *的x ^ 3 + X ^ 5)&#34 ;.这些方程式的数量未知,操作可以是' - ',' +'或' '。我已设法读入文件并将每个字符存储到字符数组中。此时,我很难找到数学运算符(' ',' - '或' +') 。我想找到')'在字符串中并立即取出字符并将其存储到mathOperator中;如果'之后的角色'不是' \ 0'。然而,这似乎不起作用,因为它返回" &#34 ;.任何建议和帮助都非常感谢。这就是问题所在:

if(polyFile.good())
{
    while(!polyFile.eof() && counter < MAX_SIZE)
    {
        polyFile.get(polyArray[counter]);
        ++counter;
    }

    polyArray[counter - 1] = '\0';

    for(int i = 0; i < polyFile.eof(); ++i)
    {
        if(polyArray[i] = ')')
        {
            polyArray[i + 1] = mathOperator;
            cout << mathOperator;
        }
    }

}
else
{
    cout << "The file could not be opened." << endl;
}

2 个答案:

答案 0 :(得分:1)

此块中存在一些问题

for(int i = 0; i < polyFile.eof(); ++i)
{
    if(polyArray[i] = ')')
    {
        polyArray[i + 1] = mathOperator;
        cout << mathOperator;
    }
}

1 /在for循环中,你想使用i&lt;反而不是polyFile.eof()

2 /在if语句中,你可能想使用if(!strcmp(polyArray [i],&#34;)&#34;)); &#34; =&#34;是一个赋值运算符,而不是比较运算符

3 /这一行:

polyArray[i + 1] = mathOperator;

意味着您将mathOperator分配给polyArray [i + 1],而不是将polyArray [i + 1]中的任何内容存储到mathOperator中。这就是你想要的:

mathOperator = polyArray[i + 1];

答案 1 :(得分:0)

这一行

for(int i = 0; i < polyFile.eof(); ++i)

应该使用counter来完成数组

for(int i = 0; i < counter - 1; ++i)