在字符串流中使用github中的代码时出错

时间:2017-05-26 10:39:12

标签: c++ visual-studio-2013

我在Visual Studio 2013中使用了here(Color文件夹)中的代码来捕获Kinect v2中的颜色数据。但是当我想运行代码时,util.h文件中的这些代码行会导致编译错误:

#define ERROR_CHECK( ret )                                         \
if (FAILED(ret)){
                                                                   \
    std::stringstream ss;                                          \
    std::ss << "failed " #ret " " << std::hex << ret << std::endl; \
    throw std::runtime_error(ss.str().c_str());                    \
}

我的Visual Studio在下面绘制了ss一条红线,并写成:namespace "std" has no member "ss" below <<: expected a ";" and below throw: expected a declaration。 这部分代码是什么,我该如何解决?

2 个答案:

答案 0 :(得分:0)

此代码有误,将std::ss更改为ss会有所帮助:

#define ERROR_CHECK( ret )                                    \
if (FAILED(ret)) {                                            \
                                                              \
    std::stringstream ss;                                     \
    ss << "failed " #ret " " << std::hex << ret << std::endl; \
    throw std::runtime_error(ss.str().c_str());               \
}

代码段中的另一个错误显示if(statement)后缺少续行。
使用此功能时,请确保包含<sstream>

宏似乎已在original code中修复,但其他示例文件夹中可能存在util.h的其他错误版本。

答案 1 :(得分:-1)

它可能不是您想要的,但如果您只是评论每一行,您的程序是否有效?它只是&#34;只是&#34;一个字符串流,只有在我发现错误时才打印出来。如果你真的想看到输出,请用某种printf()替换它。

#define ERROR_CHECK( ret )                                        
if (FAILED(ret)){

   // std::stringstream ss;                                     
   // std::ss << "failed " #ret " " << std::hex << ret << std::endl; 
   // throw std::runtime_error(ss.str().c_str()); 
printf("Error : FAILED(ret)");

}

这样你的代码就会编译,但你没有错误的原始抛出IFF发生错误