小编Jer*_*rry的帖子

如何检查文件是否存在并且在C++中是否可读?

我有一个fstream my_file("test.txt"),但我不知道test.txt是否存在.如果它存在,我想知道我是否也可以阅读它.怎么做?

我用的是Linux.

c++ linux fstream file exists

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

如何构建程序,以便它不需要DLL

如何编译(Haskell)程序以便它不需要DLL?

我写了一个使用GLUT并需要glut32.dll的程序.我编译了它ghc --make program.hs.现在我想分发我的程序,但我不希望它需要任何DLL(因此我可以将.exe提供给用户).我尝试编译,ghc -static --make program.hs但它没有工作,我仍然得到"用户错误(未知的GLUT条目glutInit)".

我怎样才能做到这一点?

compiler-construction dll linker haskell static-linking

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

检查字符串是否以TCL中的某个字符开头的最有效方法是什么?

我有一个字符串,我想检查它是否以某个字符开头(在这种情况下为#).我想知道最有效的方法!

我正在考虑的是if {[string compare -length 1 $string "#"]},因为它可能使用strcmp(),这可能是实现这一目标的最快方法之一.

我认为也可能是if {[string index $string 1] == "#"},因为它可能会*string =='#',这可能也会非常快.

你怎么看?

string comparison performance tcl

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

如何将字符串拆分为TCL中的单词列表,忽略多个空格?

基本上,我有一个由多个空格分隔的单词组成的字符串.然而,事情是,可以有多个空格而不是只有一个分隔单词.这就是为什么[split]不做我想要的:

split "a    b"
Run Code Online (Sandbox Code Playgroud)

给我这个:

{a {} {} {} b}
Run Code Online (Sandbox Code Playgroud)

而不是这个:

{a b}
Run Code Online (Sandbox Code Playgroud)

在搜索Google时,我在Tcler的wiki上找到了一个页面,用户在那里提出了大致相同的问题.

一个建议的解决方案看起来像这样:

split [regsub -all {\s+} "a    b" " "]
Run Code Online (Sandbox Code Playgroud)

这似乎适用于简单的字符串.但是测试字符串如[string repeat " " 4](使用字符串重复,因为StackOverflow剥离多个空格)将导致regsub返回"",这split将再次分成{{} {}}而不是空列表.

另一个提议的解决方案是这个,强制重新解释给定字符串作为列表:

lreplace "a   list   with many   spaces" 0 -1
Run Code Online (Sandbox Code Playgroud)

但是,如果有一件事我已经了解了TCL,那就是你永远不应该l在字符串上使用列表函数(以...开头).事实上,这个会阻塞包含特殊字符的字符串(即{和}):

lreplace "test    \{a b\}"
Run Code Online (Sandbox Code Playgroud)

返回test {a b}而不是test \{a b\}(这将是我想要的,每个以空格分隔的单词分成结果列表的单个元素).

另一种解决方案是使用"过滤器":

proc filter {cond list} {
    set res {}
    foreach element $list …
Run Code Online (Sandbox Code Playgroud)

string split tcl

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

错误处理.程序应该怎么做?

程序应如何处理错误?例:

程序需要该文件text.txt.它必须存在并且是可写的.如果它不可写或不存在应该怎么办?它应该尝试chown/chmod文件吗?它应该尝试创建它还是只显示错误消息?

或者:它应该尝试找到解决方案还是只显示错误消息?

language-agnostic error-handling

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