我正在解析HTML,并且得到了一个Array字符串,我试图将其清理并稍后放入pdf中。在此级别上,我想将所有单词从头开始移动@X
到行尾,以便最终使所有行@X
对齐。
Hello World @Xabs
Hello World @Xz
Hello World @Xss
Hello World @Xssa
Hello World @Xqq
Hello World @Xsasas
Run Code Online (Sandbox Code Playgroud)
我想作为输出:
Hello World @Xabs
Hello World @Xz
Hello World @Xss
Hello World @Xssa
Hello World @Xqq
Hello World @Xsaxs
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
到目前为止,我有:
Hello World @Xabs
Hello World @Xz
Hello World @Xss
Hello World @Xssa
Hello World @Xqq
Hello World @Xsasas
Run Code Online (Sandbox Code Playgroud) 可能重复:
C阵列实例化 - 堆栈还是堆分配?
当动态分配包含char指针的struct时,实际的char指针会发生什么?它存放在哪里?
一旦结构被释放,char指针是否随之释放?
例如,考虑以下结构:
struct mix
{
int a;
float b;
char *s;
};
typedef struct mix mix;
Run Code Online (Sandbox Code Playgroud)
然后是以下代码为它分配内存:
int main()
{
mix *ptr = (mix*)malloc(sizeof(mix));
ptr->a = 3;
ptr->b = 4.5f;
ptr->s = "Hi, there, I'm just a really long string.";
free(ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
被*s
分配在堆栈上,然后用中解脱出来一起*ptr
?我可以想象它确实是在堆栈上分配的,因为它没有以任何方式动态分配(除非malloc具有一些我不知道的功能).而且我认为"超出范围" *s
将会解放*ptr
.或者我完全错了?:)
非常感谢!
如果我有以下两个功能
std::string foo1()
{
std::string temp;
...
return temp;
}
Run Code Online (Sandbox Code Playgroud)
和
const char* foo2()
{
std::string temp;
...
return temp.c_str();
}
Run Code Online (Sandbox Code Playgroud)
以及一个以const char*作为输入的函数;
void bar(const char* input) { ... }
Run Code Online (Sandbox Code Playgroud)
哪一个更安全:
bar(foo1().c_str());
Run Code Online (Sandbox Code Playgroud)
要么
bar(foo2());
Run Code Online (Sandbox Code Playgroud)
如果我想做的就是将一个字符串作为输入传递给bar,然后不关心任何一个foo
函数的返回值它真的会重要吗?
我正在使用以下脚本来捕获STDIN
,STDOUT
并STDERR
从作为参数传递的命令中捕获.
#!/usr/bin/perl
use strict;
use warnings;
use IPC::Open3;
local(*CMD_IN, *CMD_OUT, *CMD_ERR);
my $pid = open3(*CMD_IN, *CMD_OUT, *CMD_ERR, $ARGV[0]);
close(CMD_IN);
my @stdout_output = <CMD_OUT>;
my @stderr_output = <CMD_ERR>;
close(CMD_OUT);
close(CMD_ERR);
waitpid ($pid, 0); # reap the exit code
print "OUT:\n", @stdout_output;
print "ERR:\n", @stderr_output;
Run Code Online (Sandbox Code Playgroud)
这一切都很好,除了我不知道如何监视传递的命令是否挂起.你能建议一个方法吗?
我从"Programming Perl"借用了这个片段.
我已经安装opam
,运行opam init
,运行opam switch 4.06.0
它创建了一个4.06.0
内部目录~/.opam
,运行"EVAL opam confing env
"其中出口$OCAML_TOPLEVEL_PATH
为~/.opam/4.06.0/lib/toplevel
除其他事项外,当启动ocaml
我得到了可怕的:
$ ocaml
OCaml version 4.06.0
Cannot find file topfind.
Unknown directive `camlp4o'.
#
Run Code Online (Sandbox Code Playgroud)
我已经看过这个了,这一点都没有解决我的问题而且我的智慧结束了(第一次设置OCaml).这是我的~/.ocamlinit
:
(* Added by OPAM. *)
let () =
try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
with Not_found -> ()
;;
#use "topfind"
#camlp4o
#thread
#require "core.top"
#require "core.syntax"
Run Code Online (Sandbox Code Playgroud)
编辑:看起来我没有安装core
,安装core
解决了,但现在我得到的一系列导入诊断:
Exception:
Invalid_argument
"The ocamltoplevel.cma library from …
Run Code Online (Sandbox Code Playgroud)