ошибка отладочного утверждения - PullRequest
0 голосов
/ 04 июня 2009

Я довольно долго ломал голову, этот код работал нормально, когда я сначала использовал cmd, чтобы зайти в папку project \ debug, а затем запустить программу там. Затем я добавил if (in) и еще одну часть, после чего он начал выдавать мне ошибки «debug assertion failed» mbstowcs.c

Выражение s! = NULL

Это просто не имеет никакого смысла для меня ..

Я использовал эту команду в cmd: prog.exe test.txt nuther.txt

Оба файла существуют в папке отладки и в главной папке проекта.

Есть идеи?

    int main(int argc, char **argv)
        {
        parse_opts(argc, argv); //parse the arguments

        return 0;
    }


    void parse_opts(int argc, char **argv)
    {
        string compl_out;

        if( argc > 1 )
        {
            for( int i = 1; i < argc; i++ )
            {
                if( argv[i][0] = '>' )
                {
                    ofstream out_file(argv[i+1]);
                    out_file << compl_out;
                    out_file.close();
                    break;
                }

                ifstream in(argv[i]);
                string buff;

                if(in)
                {
                    while(getline( in, buff ))
                    cout << buff << endl;

                    compl_out.append(buff); 
                }
                else
                {
                    cout << "Can't open file: " << argv[i] 
                            << ", file doesn't exist or is locked in use. " << endl;
                }
            }
        }
        else
        {
            usage();
        }

}

1 Ответ

2 голосов
/ 04 июня 2009

Первые впечатления:

if( argv[i][0] = '>' )

должно быть:

if( argv[i][0] == '>' )

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

Думаю, вы также предполагали, что compl_out.append будет внутри цикла while? Как он есть, он не добавит ничего к этому буферу:

while(getline( in, buff ))
{
    cout << "buf" << buff << endl;
    compl_out.append(buff); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...