Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;执行期间类成员函数错误/异常处理 我有一个任务,用一个公共方法创建C++的KoKuffisher类 向量*GetTokens(void)_C++_Exception_Assert - Fatal编程技术网

C++;执行期间类成员函数错误/异常处理 我有一个任务,用一个公共方法创建C++的KoKuffisher类 向量*GetTokens(void)

C++;执行期间类成员函数错误/异常处理 我有一个任务,用一个公共方法创建C++的KoKuffisher类 向量*GetTokens(void),c++,exception,assert,C++,Exception,Assert,该函数通过stdin接收一个字符串,将该字符串标记化,并返回一个大小()为1或2的标记向量指针。函数需要在以下情况下抛出错误:有0个令牌,超过2个令牌,第一个令牌不是字符串,或者第一个令牌不是字符串,第二个令牌不是整数 Code that calls my function from professor: ////////////////////// For (int i=0; i <5; i++) { Tokenizer tok; Vector<string> *te

该函数通过stdin接收一个字符串,将该字符串标记化,并返回一个大小()为1或2的标记向量指针。函数需要在以下情况下抛出错误:有0个令牌,超过2个令牌,第一个令牌不是字符串,或者第一个令牌不是字符串,第二个令牌不是整数

Code that calls my function from professor:
//////////////////////
For (int i=0; i <5; i++) {
  Tokenizer tok;
  Vector<string> *test = tok.GetTokens ();

  If (test->size ()==1)  {
    cout << "Yay" << endl;
  } else {
    cout  << "Boo" << endl;
  }
///////////////
从professor调用我的函数的代码:
//////////////////////
对于(int i=0;i size()=1){

cout所以我想出了一种不同的方法来解决我的问题。我无法让任何错误处理或异常正常工作。相反,我只是回到使用If…then…else语句对cout进行错误检查,然后我创建函数来控制打印输出

void coutOff() {
    cout.setstate(std::ios_base::failbit)
}

void coutOn() {
    cout.clear();
}

这就是异常发挥作用的地方,请仔细阅读它们,并测试当您在
GetTokens
中抛出
something时会发生什么。顺便说一句,如果您的
GetTokens
不是绝对巨大的,那么将其粘贴到这里可能会有助于避免堆栈溢出。请花时间阅读并参考what and how y中的资料你可以在这里提问。在同一个函数中抛出某些东西并立即捕获它没有多大意义。通常,你抛出这些东西是为了脱离函数上下文,让一些调用函数来处理它。因此,我继续添加了我的Tokenizer.cpp类。请注意,我已经重复了15次代码,试图让错误/异常正常工作。因此,我当输入空字符串(或0个标记)时,我再次编写它以尝试在professors调用函数中停止执行。我得到一个错误,但它会中断for循环并退出professors代码。我需要有错误或异常,并且(我不确定如何说)但我是在错误发生之前自动返回的,所以我是C程序员,我有很多在嵌入式系统中的经验。我正在为一个类做C++。如果我想创建一个类,它将处理正常范围之外的输入和情况,但不会停止执行,那是错误处理还是异常处理?惯性导航与制导?
void coutOff() {
    cout.setstate(std::ios_base::failbit)
}

void coutOn() {
    cout.clear();
}