我已经抓了很长时间了,这个代码工作正常我第一次使用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();
}
}
答案 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);
}