小编use*_*456的帖子

如何捕获一般异常并显示其派生的内容()

这样的代码会出现问题:

#include <cstdlib>
#include <iostream>
#include <stdexcept>

using namespace std;

int main(int argc, char** argv) {

try {
    throw  runtime_error("Message");
} catch (exception e) {
    cout << e.what();
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望Message能出现.但结果是std::exception.我认为virtual functions可以从超类引用中调用子类.怎么解决这个问题?

c++ exception try-catch

2
推荐指数
1
解决办法
465
查看次数

根据if语句初始化对象

我正在尝试使用ifstreamistringstream仅使用变量.我知道他们俩都是孩子的istream.所以,我试图只做一个类型的变量istream和初始化取决于一些输入.

真正的问题是我要求用户输入文件路径或文件内容.然后,我将逐行阅读.我试着这样做.

istream * stream;
if(isFile){
   ifstream a("fileOrContent");
   stream = &a;
} else {
   istringstream a("fileOrContent");
   stream = &a;
}
getline(stream,line)
// do something with line
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个

ifstream stream;
if(isFile){
   ifstream stream("fileOrContent");
} else {
   istringstream stream("fileOrContent");
}
getline(stream,line)
// do something with line
Run Code Online (Sandbox Code Playgroud)

目前,我为每个代码使用了两个完整的代码副本.有关我怎么做的任何建议?

谢谢

c++ c++11

1
推荐指数
1
解决办法
166
查看次数

标签 统计

c++ ×2

c++11 ×1

exception ×1

try-catch ×1