小编Arm*_*man的帖子

函数模板的默认模板参数

为什么默认模板参数只允许在类模板上?为什么我们不能在成员函数模板中定义默认类型?例如:

struct mycclass {
  template<class T=int>
  void mymember(T* vec) {
    // ...
  }
};
Run Code Online (Sandbox Code Playgroud)

相反,C++强制只允许在类模板上使用默认模板参数.

c++ templates

183
推荐指数
3
解决办法
6万
查看次数

mysql:NOT LIKE的正确语法是什么?

嗨,我试图显示名称不像mysql的模式的表格引发错误:

SHOW TABLES  NOT LIKE  "tree%";
Run Code Online (Sandbox Code Playgroud)

收益:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT LIKE "tree%"' at line 1
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

谢谢阿曼.

mysql syntax

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

如何在php和boost库IPC之间进行通信?

我在php中的客户端和服务器通过共享内存进行通信,现在我想使用Boost.Interprocess访问这个shred内存对象我该如何访问它?server.php:

  function create_image($str){
  // Create a blank image and add some text
  $im = imagecreatetruecolor(300, 20);
  $text_color = imagecolorallocate($im, 233, 14, 91);
  $stringBanner=exec("date").$str;
  imagestring($im, 1, 5, 5,  $stringBanner , $text_color);

  ob_start();
   imagejpeg($im);
  $i = ob_get_contents();
  ob_get_clean(); 
  imagedestroy($im);
   return $i; 
  }  
  echo "\n".__FILE__."\n";
  $shm_key = ftok(__FILE__, 't');
  echo $shm_key."\n";


  $shm_id = shmop_open($shm_key, "a", 0, 0); 
 if ($shm_id) {
  //it is already created
  shmop_delete($shm_id);
  shmop_close($shm_id); 
 } 
 //you need to create it with shmop_open using "c" only
 echo "try to create\n";
 if(!$shm_id = …
Run Code Online (Sandbox Code Playgroud)

php ipc shared-memory boost-interprocess

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

BOOST program_options:解析多个参数列表

我想用正值或负值传递多个参数.有可能解析它吗?

目前我有一个以下初始化:

vector<int> IDlist;
namespace po = boost::program_options;     
po::options_description commands("Allowed options");
            commands.add_options()              
                ("IDlist",po::value< vector<int> >(&IDlist)->multitoken(), "Which IDs to trace: ex. --IDlist=0 1 200 -2")
                ("help","print help")
                ;
Run Code Online (Sandbox Code Playgroud)

我想打个电话:

./test_ids.x --IDlist=0 1 200 -2
unknown option -2
Run Code Online (Sandbox Code Playgroud)

因此,program_options假定我传递-2作为另一个选项.

我可以以能够接受负整数值的方式配置program_options吗?

谢谢阿曼.

编辑: BTW我正在通过简单的解析器解析它

store(command_line_parser(argc, argv).options(commands).run(), vm);
Run Code Online (Sandbox Code Playgroud)

,但解决方案是使用扩展的:

parse_command_line
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-program-options

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

如何在MySql过程中抛出错误?

什么是强制MySQL在存储过程中抛出错误的机制?

我有一个调用另一个函数的过程:

PREPARE my_cmd FROM @jobcommand;
EXECUTE my_cmd;
DEALLOCATE PREPARE my_cmd;
Run Code Online (Sandbox Code Playgroud)

job命令是:

jobq.exec("Select 1;wfdlk# to simulatte an error");
Run Code Online (Sandbox Code Playgroud)

然后:

CREATE PROCEDURE jobq.`exec`(jobID VARCHAR(128),cmd TEXT)
BEGIN
DECLARE result INT DEFAULT 0;  
SELECT sys_exec( CONCAT('echo ',cmd,' |  base64 -d > ', '/tmp/jobq.',jobID,'.sh ; bash /tmp/jobq.',jobID,'.sh &> /tmp/jobq.',jobID)) INTO result; 
IF result>0 THEN 
# call raise_mysql_error(result); 
END IF;
END;
Run Code Online (Sandbox Code Playgroud)

我的职业.exec总是成功的.有没有办法引发错误?如何实现raise_mysql_error函数?

顺便说一下,我使用的是MySQL 5.5.8

谢谢阿曼.

mysql stored-procedures stored-functions throw

11
推荐指数
2
解决办法
3万
查看次数

STL:为向量写"where"运算符

我需要根据几个布尔谓词在向量中找到索引.

例如:

vector<float> v;
vector<int> idx;

idx=where( bool_func1(v), bool_func2(v), ... );
Run Code Online (Sandbox Code Playgroud)

声明**where**函数的方法是什么,以便在向量上使用几个用户定义的布尔函数?

谢谢阿曼.

一周后编辑

我用模板做了一些复杂的解决方案.但实际上valarray,我可以使用已预定义的任务.以下是可能会发现它有用的代码段:

  double dr=Rc/(double)Nbins, r;
  sigma.resize(Nbins);
  rr=sigma;
  valarray<double> vz(&data.vz[0], data.vz.size());
  double mvel=vz.sum()/(double)vz.size();
  for(size_t i=0l;i<Nbins;i++)
   {
   r=dr*i;
   valarray<bool> ids = (dist < r+dr) && (dist > r);//The magic valarray<bool>
   if(ids.max())
    {
    valarray<double> d=vz[ids];//we can use indirect operation.
    d-=mvel;
    d=pow(d,2.0);
    sigma[i]= sqrt(d.sum()/(double)d.size());
    rr[i]=r;
    cout<<i<<") "<<r<<" "<<sigma[i]<<endl;
    }
   }
Run Code Online (Sandbox Code Playgroud)

c++ stl vector

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

如何使用PHP :: PDO使用变量执行mysql脚本?

我无法执行长脚本pdo抛出异常:

SQLSTATE[HY000]: General error
Run Code Online (Sandbox Code Playgroud)

如果我提交的脚本不包含变量,则它运行没有问题.相同的脚本在phpmyadmin界面上运行.

这是我的代码片段:

 try {
 $dsn = "mysql:host=" . DB_SERVER . ";dbname=" . DB_DEFAULT;
 $db = new PDO($dsn, DB_USER, DB_PASS);
 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $q = $db->query($query);
 if (!$q) {
 echo $db->errorInfo();
  } else {
        $rows = $q->fetchAll(PDO::FETCH_ASSOC);
    }
} catch (PDOException $e) {
    var_dump($e);
 }
Run Code Online (Sandbox Code Playgroud)

这是一些不由PDO执行的测试:

SET @ra_LMC:=80.9;
SELECT @ra_LMC;
Run Code Online (Sandbox Code Playgroud)

我应该如何使用pdo执行多行脚本?

感谢
阿曼.

php mysql sql pdo

8
推荐指数
2
解决办法
7045
查看次数

如何使用boost库获取系统环境变量?

我在Windows和MacOS上工作,我想得到环境变量.如何使用boost库获取系统环境变量?

是否有相当于System.Environment.GetEnvironmentVariable()

c++ boost platform-independent

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

如何从mysql 5.1迁移到5.5?

我只是从5.1迁移到5.5.我将我的数据从mysql5.1数据forlder复制到mysql5.5/data.

我只是想知道我是否可以覆盖mysql 5.5数据目录中的文件ibdata1

谢谢阿曼.

编辑

是的我可以复制5.1到5.5然后我需要运行mysql_upgrade

mysql migration

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

BOOST.IOstreams:写入bzip2的麻烦

您好我想使用Boost.IOstreams将我的数据存储到bzip2文件中.

void test_bzip()
{
namespace BI = boost::iostreams;
{
string fname="test.bz2";
  {
    BI::filtering_stream<BI::bidirectional> my_filter; 
    my_filter.push(BI::combine(BI::bzip2_decompressor(), BI::bzip2_compressor())) ; 
    my_filter.push(std::fstream(fname.c_str(), std::ios::binary|std::ios::out)) ; 
    my_filter << "test" ; 

    }//when my_filter is destroyed it is trowing an assertion.
}
};
Run Code Online (Sandbox Code Playgroud)

我做错了什么?我正在使用boost 1.42.0.

亲切的问候阿曼.

编辑 如果我删除双向选项代码正在运行:

#include <fstream> 
#include <iostream> 
#include <boost/iostreams/copy.hpp> 
#include <boost/iostreams/filter/bzip2.hpp> 
#include <boost/iostreams/device/file.hpp> 
#include <boost/iostreams/filtering_stream.hpp>
#include <string>



void test_bzip()
{
        namespace BI = boost::iostreams;
        {
                std::string fname="test.bz2";
                {
                        std::fstream myfile(fname.c_str(), std::ios::binary|std::ios::out); 
                        BI::filtering_stream<BI::output> my_filter; 
                        my_filter.push(BI::bzip2_compressor()) ; 
                        //my_filter.push(std::fstream(fname.c_str(), std::ios::binary|std::ios::out)) ; //this line will work on …
Run Code Online (Sandbox Code Playgroud)

c++ boost-iostreams bzip2

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