Поменять символ в файле C ++ - PullRequest
       24

Поменять символ в файле C ++

0 голосов
/ 13 декабря 2011

Я не знаю, почему это не сработает, мне нужно поменять местами два символа, введенные как a и b, он компилируется, но все символы заменяются на символ, введенный как b, любой совет?

while (n != exist)
{
    cout<<"What is the letter you want to swap?"<<endl;
    cin>>a;             
    cout<<"What is the letter you want to swap it with?"<<endl;
    cin>>b;
    if (inFile.is_open())
    {
        while (inFile.good())
        {   
            inFile.get(c);
            if( c = a )
            {
                outFile<< b;
            }
            else if (c = b)
            {
                outFile<< a;
            }
            else
            {
                outFile<< c;
            }                               
        }                           
    }
    else
    {
        cout<<"Please run the decrypt."<<endl;
    }
    cout<<"Another letter? <n> to stop swapping"<<endl;
    cin>>n;
}               

Ответы [ 4 ]

7 голосов
/ 13 декабря 2011

if( c = a ) и else if (c = b) являются подозрительными.Вы назначаете значение a для c и значение b для c, соответственно.Я полагаю, что если операция присваивания завершится успешно (что это такое), блок выполнится.Я полагаю, вам нужен оператор == вместо оператора =.

7 голосов
/ 13 декабря 2011
if( c == a )
{
    outFile<< b;
}
else if (c == b)
{
    outFile<< a;
}

= для назначения, используйте == для сравнения.

Способ, которым вы его используете, если a не равно 0 (целое число 0, а не символ '0').), эта первая ветвь всегда будет выполняться.

7 голосов
/ 13 декабря 2011

В if и else if вам нужно использовать == вместо =.В C ++ / C вы используете == для сравнения и = для назначения.

6 голосов
/ 13 декабря 2011

Вы назначаете значения вместо тестирования.

Это должно быть

if (c == b)

и

if (c == a)

...