调试断言错误

时间:2009-06-03 23:43:54

标签: c++ debugging

我已经抓了很长时间了,这个代码工作正常我第一次使用cmd进入项目\ debug文件夹然后在那里运行程序。然后我添加了if(in)和else部分然后它开始给我“debug assertion failed”错误mbstowcs.c

表达式s!= NULL

这对我没有任何意义..

我在cmd中使用了这个命令:prog.exe test.txt nuther.txt

这两个文件都存在于debug文件夹和主项目文件夹中..

有什么想法吗?

    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 个答案:

答案 0 :(得分:2)

第一印象:

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

应该是:

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

您要分配而不是比较。

我想你也可能打算将 compl_out.append 放在while循环中?因为它不会附加任何缓冲区:

while(getline( in, buff ))
{
    cout << "buf" << buff << endl;
    compl_out.append(buff); 
}