我正在从命令行读取输入文件.
int main(int argc, char **argv)
{
Scene myScene;
string filename = argv[1];
myScene = Parser(filename);
...
}
Run Code Online (Sandbox Code Playgroud)
从另一个文件中我使用解析器函数,这个函数就像这样;
Scene Parser(string filename)
{
string line;
ifstream myfile (filename.c_str());
...
return scene;
}
Run Code Online (Sandbox Code Playgroud)
我收到了错误; 抛出'std :: logic_error'的实例后调用what():basic_string :: _ S_construct null无效
程序接收信号SIGABRT,已中止.
我搜索了错误.我认为这是因为这些方面.但我找不到实际的原因.有谁能够帮我?
Hal*_*oum 10
这意味着filename是空的Parser,可能是因为你没有传递任何参数到你的程序的命令行.
确保始终检查是否将预期的参数数量传递给您的程序.例如,你可以这样做:
int main(int argc, char *argv[]) {
if (argc != NUMBER_OF_EXPECTED_ARGUMENTS) {
exit(EXIT_FAILURE);
}
// ...
string filename(argv[1]);
Scene myScene = Parser(filename);
// ...
}
Run Code Online (Sandbox Code Playgroud)
您可能忘记指定命令行参数,因此结果argv [1]等于NULL.您应该检查用户是否输入了命令行参数.例如
int main(int argc, char **argv)
{
Scene myScene;
string filename;
if ( 1 < argc ) filename.assign( argv[1] );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36161 次 |
| 最近记录: |