我正在使用boost :: tokenizer来获取';' 从a分开的字段string.我可以检索下面代码中显示的字段,但我有两个问题:
a;b;c.以下代码将打印所有这些代码.但我也需要打印空字段.例如柜面字符串的a;;;b;c令牌也应该包含什么作为第二和第三元素.或者换句话说,第二和第三个标记应该是空的.#include <boost/tokenizer.hpp>
namespace std;
namespace boost;
int main()
{
string data="a;;;;b;c";
boost::char_separator<char> obj(";");
boost::tokenizer<boost::char_separator<char> > tokens(data,obj);
cout<<endl<<tokens.countTokens();
for(boost::tokenizer<boost::char_separator<char> >::iterator it=tokens.begin();
it!=tokens.end();
++it)
{
std::cout<<*it<<endl;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试理解通过指向函数指针数组的指针来调用函数的语法。我有一个函数指针数组FPTR arr[2],以及一个指向该数组的指针FPTR (vptr)[2]。但这在尝试通过指向数组的指针进行调用时给了我一个错误
typedef int (*FPTR)();
int func1(){
cout<<"func1() being called\n";
}
int func2(){
cout<<"fun2() being called\n";
}
FPTR arr[2] = {&func1,&func2};
FPTR (*vptr)[2];
vptr=&arr;
cout<<"\n"<<vptr[0]<<endl;
cout<<"\n"<<vptr[0]()<<endl; // ERROR when trying to call the first function
Run Code Online (Sandbox Code Playgroud) 我在这些问题上提到了很多StackOverflow链接,其中auto_ptr不能与STL很好地配合
的原因std::auto_ptr<>不能满足可复制构造和可分配的要求(因为auto_ptr有一个伪造的复制构造函数,它基本上可以转移所有权)。
但是,甚至unique_ptr没有复制ctor和赋值运算符(已禁用),那么如何满足可复制构造和可赋值的要求呢?
我曾经认为cout语句指向相同的值,即使一个以十六进制打印,其他以整数格式打印.但今天我在g ++上运行相同的内容,发现第二个语句崩溃了.
int i1=12;
int *p1=&i1;
cout<<*(*((int***)&p1)); cout<<"\n\n "; //is same
cout<<*(int*)*(int*)&p1; cout<<"\n "; //is same
Run Code Online (Sandbox Code Playgroud)
为什么有效地将第二个语句与打印值相同时会崩溃i1.
可能这个问题多次被问到能否在你的perl脚本中加入awk one liner.但是这些问题对于以下问题过于具体:
示例:我有输出,ls -lart第9列是文件名.我很容易在awk中做到这一点ls -lart|awk '{print $9}'.同样的事情当然可以使用perl来完成readdir().但是在perl中提取第8列或第7列并不容易?如果我必须提取数据管道将其管道输送到sed等,情况会变得更糟.
另一个例子: 我有一个特定的DIR,它有许多格式的文件,如:
ABC_9090_DEF_10-22-30_13-07-2014.temp
Run Code Online (Sandbox Code Playgroud)
注意date_time.temp标记部分.这里的格式是ABC_4digits_DEF_hours-minutes-seconds_day-month-year
我想只看到刚刚创建的新文件(比如说从现在起5分钟之前).使用awk/sed的方法是(伪代码,让我知道你是否需要我复制实际的一个班轮):
ls -lart|awk '{print $9}'|egrep 提取10-22-30_13-07-2014问题: 但由于某种原因(其他复杂性)我想在perl中编写它并且我发现当使用系统命令在perl中使用它时,if条件if($ 1> $ mynum)会抛出错误.它说使用'>'语法错误,即使使用单引号,双引号,没有引号.
有人可以告诉我一般情况: