繁体   English   中英

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

[英]C++ Find a Character after the Previous Character in a Character Array

我正在执行一个在两个多项式之间进行运算的项目。 从一个名为“ functions.txt”的文本文件中读取多项式,格式为“(2 * x ^ 2 + 5 * x ^ 4-3 * x)+(6 * x + 2) * X ^ 3 + X ^ 5)”。 这些方程式的数量未知,其运算符可以为“-”,“ +”或“ ”。 我设法读取文件并将每个字符存储到字符数组中。 在这一点上,我只是很难找到数学运算符(“ ”,“-”或“ +”)。 我想出了在字符串中找到')'并在紧接其后的字符并将其存储到mathOperator中的方法; 如果')'之后的字符不是'\\ 0'。 但是,这似乎不起作用,因为它返回“”。 任何建议和帮助,我们将不胜感激。 这是问题所在:

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;
}

这个区块有一些问题

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

1 /在for循环中,您要使用i <计数器而不是polyFile.eof()

2 /在if语句中,您可能要使用if(!strcmp(polyArray [i],“)”))); “ =“是赋值运算符,不是比较运算符

3 /这行:

polyArray[i + 1] = mathOperator;

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

mathOperator = polyArray[i + 1];

这条线

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

应该使用counter来遍历数组

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM