小编Jon*_*rdy的帖子

perl:在第N位写入文件

我正在尝试写入Nth POSITION的档案.我试过下面的例子,但最后写了.请帮助实现这一目标.

#!/usr/bin/perl

open(FILE,"+>>try.txt")
or
die ("Cant open file try.txt");

$POS=5;

   seek(FILE,$POS,0);

   print FILE "CP1";
Run Code Online (Sandbox Code Playgroud)

perl

5
推荐指数
1
解决办法
6246
查看次数

在什么平台上会崩溃,我该如何改进呢?

我已经编写了一个用于在C++中创建动态结构的类的基础知识.动态结构成员与(在我的测试中指示)连续存储编译器将在等效静态结构中插入的相同填充.因此,动态结构可以隐式转换为静态结构,以便与现有API互操作.

最重要的是,我不相信自己能够编写可以在或多或少任何平台上编译和工作的Boost质量代码.这段代码的哪些部分是危险的需要修改?

我还有一个与设计相关的问题:模板化get访问器是为编译器提供类型安全代码所需的静态类型信息的唯一方法吗?实际上,用户dynamic_struct必须在访问时指定他们正在访问的成员的类型.如果该类型应该更改,则所有访问将变为无效,并且会导致严重的崩溃 - 或者更糟糕的是,无声地失败.并且它无法在编译时捕获.这是一个巨大的风险,我想补救一个.

用法示例:

struct Test {

    char a, b, c;
    int i;
    Foo object;

};

void bar(const Test&);

int main(int argc, char** argv) {

    dynamic_struct<std::string> ds(sizeof(Test));

    ds.append<char>("a") = 'A';
    ds.append<char>("b") = '2';
    ds.append<char>("c") = 'D';
    ds.append<int>("i") = 123;
    ds.append<Foo>("object");
    bar(ds);

}
Run Code Online (Sandbox Code Playgroud)

代码如下:

//
// dynamic_struct.h
//
// Much omitted for brevity.
//


/**
 * For any type, determines the alignment imposed by the compiler.
 */
template<class T>
class alignment_of …
Run Code Online (Sandbox Code Playgroud)

c++ struct dynamic data-structures

5
推荐指数
1
解决办法
185
查看次数

嵌套元组链上的多态函数

假设我有一个类型列表[*]:

let Ts = '[Int, Bool, Char]
Run Code Online (Sandbox Code Playgroud)

我想将其转换为元组链:

type family Tupled (ts :: [*]) z :: *
type instance Tupled (t ': ts) z = (t, Tupled ts z)
type instance Tupled '[] z = z
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好:

> :kind! Tupled Ts ()
Tupled Ts () :: *
= (Int, (Bool, (Char, ())))
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够编写一个类型Fun来表示在该链的"底部"具有多态性的函数.例如,Fun Ts Ts应该适用于以下任何一种类型:

(Int, (Bool, (Char, (String, ()))))
(Int, (Bool, (Char, (Word, (ByteString, ())))))
Run Code Online (Sandbox Code Playgroud)

我试过这个:

newtype Fun as bs = Fun
  { …
Run Code Online (Sandbox Code Playgroud)

haskell fold type-level-computation

5
推荐指数
1
解决办法
139
查看次数

编程使用特殊字符的语言

我正在研究通用编程语言.除了字符串和标识符中对Unicode支持的现代要求之外,我正在考虑提供一些运算符的替代拼写,具体来说:

  • 关系( for <= >= !=)

  • 按位和设定( 用于& |)

  • 逻辑( ¬for && || !)

  • 箭头( 用于-> =>)

我知道APLFortress使用特殊字符 - 前者通常是关于它的笑话 - 但这些都非常适合学术和科学用途.特殊字符在现代非学术语言中是否有任何地方?

unicode programming-languages special-characters

4
推荐指数
1
解决办法
2043
查看次数

这是在C++中执行"with"语句的最佳方法吗?

编辑:

所以这个问题被误解为这样一个荒谬的程度,它已经没有意义了.我不知道怎么回事,因为我实际过的问题是我是否具体实现了这个 - 是的,已知是无意义的,是的,不是非常类似于惯用的C++ - 宏,它是否尽可能好,以及它是否必然不得不使用auto,或者如果有合适的解决方法.它不应该产生这么多的关注,当然不是对这种程度的误解.要求受访者编辑他们的答案是毫无意义的,我不希望任何人因此而失去声誉,并且在这里有一些好的信息可供潜在的未来观众使用,所以我将随意挑选一个较低的选民答案是均匀分配所涉及的声誉.继续前进,没有什么可看的.


我看到了这个问题,并认为with用C++ 编写语句可能很有趣.该auto关键字使这很容易,但有一个更好的方式来做到这一点,或许不使用auto?为简洁起见,我省略了一些代码.

template<class T>
struct with_helper {

    with_helper(T& v) : value(v), alive(true) {}

    T* operator->() { return &value; }
    T& operator*() { return value; }

    T& value;
    bool alive;

};


template<class T> struct with_helper<const T> { ... };


template<class T> with_helper<T>       make_with_helper(T& value) { ... }
template<class T> with_helper<const T> make_with_helper(const T& value) { ... }


#define with(value) …
Run Code Online (Sandbox Code Playgroud)

c++ with-statement c++11

4
推荐指数
2
解决办法
459
查看次数

如何将execv用于其位置未知的命令?

假设我想生成一个进程并运行execv以执行命令,就像ls这样我就是这样做的:

char * const parm[] = { "/usr/bin/ls","-l" , NULL };
if ((pid = vfork()) == -1)
    perror("fork error");
else if (pid == 0)
{
    execv("/usr/bin/ls", parm);
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我在这里硬编码了ls命令所在的位置(/usr/bin/ls).现在假设我不知道特定命令在哪里并且想要执行它然后我该怎么做呢?我知道在常规shell PATH中查找变量以实现相同,但是在使用C程序的情况下execv如何实现它?

c unix linux exec

4
推荐指数
1
解决办法
4495
查看次数

根据给定的ID列表从文本文件中提取所有行

我有2个文本文件.file1包含ID列表:

11002
10995
48981
79600
Run Code Online (Sandbox Code Playgroud)

file2:

10993   item    0
11002   item    6
10995   item    7
79600   item    7
439481  item    5
272557  item    7
224325  item    7
84156   item    6
572546  item    7
693661  item    7
.....
Run Code Online (Sandbox Code Playgroud)

我试图选择file2ID(第一列)所在的所有行file1.目前,我正在做的是遍历第一个文件来创建一个正则表达式:

^\b11002\b\|^\b10995\b\|^\b48981\b|^\b79600\b
Run Code Online (Sandbox Code Playgroud)

然后运行:

grep '^11002\|^10995\|^48981|^79600' file2.txt
Run Code Online (Sandbox Code Playgroud)

但是当ID的数量file1太大(~2000)时,正则表达式会变得很长而grep变慢.还有另外一种方法吗?我正在使用Perl + Awk + ​​Unix.

unix perl awk

4
推荐指数
1
解决办法
7297
查看次数

在Haskell函数类型声明中使用[Char]而不是String是一个坏主意

我刚刚开始学习Haskell,"学习Haskell for Great Good".我目前正在阅读"类型和类型类"一章,所以我的知识非常......不存在.我使用Sublime Text 2和SublimeHaskell包,它在每次保存时构建/检查文件.

问题:我正在尝试像这样进行函数类型声明:

funcName :: [Char] -> [Char]
Run Code Online (Sandbox Code Playgroud)

我收到这个警告:

警告:使用找到的字符串:[Char] - > [Char]为什么不:String - > String

建立失败

你能解释一下为什么使用Char数组而不是字符串是一个坏主意,或者给我一个链接来解释可能的反响等等.我用Google搜索,什么也没发现.

PS我是一名C#开发人员,我理解char数组和c语言中的字符串之间的区别.

haskell hlint sublimetext2

4
推荐指数
2
解决办法
417
查看次数

List的最后一个元素的模式匹配

我们使用(x:xs)模式匹配第一个元素,如下例所示:

head' :: [a] -> a  
head' xs = case xs of [] -> error "No head for empty lists!"  
                      (x:_) -> x  
Run Code Online (Sandbox Code Playgroud)

有没有办法在最后一个元素上进行模式匹配?

haskell pattern-matching

4
推荐指数
3
解决办法
391
查看次数

将结构指针转换为联合指针

我有一个union包含各种兼容struct成员:

enum Type { T1, T2, … };

struct S1 { enum Type type; … };
struct S2 { enum Type type; … };
…

union U {
    enum Type type;
    struct S1 as_s1;
    struct S2 as_s2;
    …
};
Run Code Online (Sandbox Code Playgroud)

type这些结构体的字段被视为不可变的,只type访问当前对应的联合的字段。据我所知,铸造union U *struct S1 *,只要被定义type不变的坚持,而是相反也是如此?

struct S1 *s1 = malloc (sizeof (struct S1));
union U *u = (union U *)s1;
Run Code Online (Sandbox Code Playgroud)

也就是说,仅分配sizeof (struct S1)字节并将结果强制转换为安全union U * …

c struct casting undefined-behavior unions

3
推荐指数
1
解决办法
1463
查看次数