是否可以使用本地类作为std :: find_if的谓词?
#include <algorithm>
struct Cont
{
char* foo()
{
struct Query
{
Query(unsigned column)
: m_column(column) {}
bool operator()(char c)
{
return ...;
}
unsigned m_column;
};
char str[] = "MY LONG LONG LONG LONG LONG SEARCH STRING";
return std::find_if(str, str+45, Query(1));
}
};
int main()
{
Cont c;
c.foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在gcc上遇到以下编译器错误:
error: no matching function for call to 'find_if(char [52], char*, Cont::foo()::Query)'
Run Code Online (Sandbox Code Playgroud) 我有以下命令:
ruby SaveAllDatabases.rb 192.168.0.15 1024 -r #0-D --non-interactive
Run Code Online (Sandbox Code Playgroud)
这是一个相当基本的命令,我用一些命令行参数运行ruby脚本.所述-r
参数是一个正则表达式(#0-d).
如果我在Windows上运行此命令(使用标准的Windows命令提示符),一切都按预期运行,但如果我尝试在Linux上运行相同的命令(安装了相同版本的ruby).我收到以下错误:
/usr/lib/ruby/1.8/optparse.rb:451:in `parse': missing argument: -r (OptionParser::MissingArgument)
from /usr/lib/ruby/1.8/optparse.rb:1295:in `parse_in_order'
from /usr/lib/ruby/1.8/optparse.rb:1254:in `catch'
from /usr/lib/ruby/1.8/optparse.rb:1254:in `parse_in_order'
from /usr/lib/ruby/1.8/optparse.rb:1248:in `order!'
from /usr/lib/ruby/1.8/optparse.rb:1339:in `permute!'
from /usr/lib/ruby/1.8/optparse.rb:1360:in `parse!'
from SaveAllDatabases.rb:256
Run Code Online (Sandbox Code Playgroud)
如果我从正则表达式中取出哈希/磅(#)符号,则命令运行正常.我已经完成了一个测试,并且命令行似乎没有在#进入argv数组之后传递任何内容.
为什么会这样,我该如何解决呢?
我想在注册表中保存我的窗口的边界,因为我使用代码:
dialogView.Save("WindowPosition", this.DesktopBounds.ToString());
Run Code Online (Sandbox Code Playgroud)
dialogView是我想要保存它们的路径.它保存了一切好的例子:
{X=54,Y=153,Width=723,Height=555}
Run Code Online (Sandbox Code Playgroud)
但是获得它们的最佳方法是什么,因为我可以从注册表中获取的类型可以是字符串示例:
dialogView.Load("WindowPosition",string.Empty,out position);
Run Code Online (Sandbox Code Playgroud)
但如何将字符串转换为矩形到init设置为窗口我不知道?有人可以建议吗?
我有以下代码:
HTML
<div id=addQuesion">
<li>
<label>Text</label>
<input type="text"/>
</li>
<li>
<label>Try</label>
<input type="button"/>
</li>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
#addQuesion li label {
position: relative;
top: 10px;
left: 10px;
font-size: 25px;
border: 1px black solid;
padding-right: 50px;
}
#addQuesion li input {
position: relative;
top: 10px;
left: 10px;
width: 400px;
font-size: 25px;
}
Run Code Online (Sandbox Code Playgroud)
确保两个输入的宽度为400px,但我想知道如何使每个输入(文本,按钮)具有不同的宽度.
我知道我可以使用这样的风格,<input style="..." />
但我需要使用CSS.我也知道我可以<div>
为每个输入使用不同的但我想把它们放在同一个div中.
我无法弄清楚我的代码有什么问题
char* readString() {
char* result;
char line[SIZE];
if(! fgets(line, sizeof(line), stdin))
fprintf(stderr, "error\n");
//printf 1
printf("line length = %lu\n", strlen(line));
result = line;
return result;
}
int main() {
char* myWord = readString();
unsigned long len = (unsigned)strlen(myWord);
//printf 2
printf("myWord length = %lu\n", len);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果printf1和printf2都没有注释,那么我得到真正的长度.例如,对于单词'hello',我有输出
line length = 6
myWord length = 6
Run Code Online (Sandbox Code Playgroud)
但是,如果我只评论printf1,对于同一个词'你好',我有
myWord length = 16
Run Code Online (Sandbox Code Playgroud) 我必须编写一个程序,其中使用动态数组:
int size=1;
double* dyn_arr = new double[size];
int n=0;
double sum=0.0;
while(std::cin >> dyn_arr[n]){
sum = sum + dyn_arr[n++];
if(n==size){
size*=2;
double* new_array = new double[size];
std::copy(dyn_arr, dyn_arr + n, new_array);
delete[] dyn_arr;
dyn_arr = new_array;
}
}
Run Code Online (Sandbox Code Playgroud)
dyn_arr = new_array
后面的部分看不懂delete[] dyn_arr
了
dyn_arr
是数组第一个元素的指针dyn_arr
,不是吗?如何删除指针/数组并再次写入dyn_arr = new_array
?
考虑以下情况:
fork()
从我的程序创建一个子进程1234
。execvp("myotherprogram", some_args);
myotherprogram
预计会无限期地运行,直到收到 SIGTERM(或更高信号),但是,在某些情况下(例如丢失文件),它只会打印错误并中止。
当父进程收到事件时,它想再次杀死子进程,调用:
const int kill_result = kill(1234, SIGTERM);
Run Code Online (Sandbox Code Playgroud)
如果myotherprogram
提前退出,会kill(1234, SIGTERM)
是安全的,还是操作系统可以回收 PID,并且我可能会杀死一个随机进程?
我刚刚开始使用c ++.我想仅使用if-else语句找到4个变量中的最低者.到目前为止,这是我能想到的.反正有没有缩短这个?
float lowest;
if (assignment1<assignment2 && assignment1<assignment3 && assignment1<assignment4)
assignment1 == lowest;
else if (assignment2<assignment1 && assignment2<assignment3 && assignment2<assignment4)
assignment2 == lowest;
else if (assignment3<assignment1 && assignment3<assignment2 && assignment3<assignment4)
assignment3 == lowest;
else
assignment4 == lowest;
Run Code Online (Sandbox Code Playgroud)