在C++程序中,我想显示一列浮点值,以便符号,数字和小数点都排成一行.必要时,多个前导零应填充每个值的整数部分.例如:
A column of floating point values:
+000.0012
-000.0123
+000.1235
-001.2346
+012.3457
-123.4568
Run Code Online (Sandbox Code Playgroud)
我有一个精心评论的测试程序,证明了这个问题.但是,当我编辑这篇文章时,我在这里找到了我需要的答案:
- 使用printf打印浮点数时,额外的前导零?
基本的问题是我使用的格式代码"%+04.4f"应该使用"%+09.4f",因为我想要的总字段宽度为9:
我没有足够的声誉点来评论该帖子,所以谢谢你,@ AndiDog.
我仍然不知道如何使用流格式化标志获得多个前导零.但这是另一天的战斗.我现在会坚持使用printf和stream的混合物.
我的应用程序依赖于 OpenSSL。因此,我下载并构建了 OpenSSL,并将我需要的静态库(libssl.a和libcrypto.a)放置在我可以控制的已知目录中。在我的应用程序的 cmake 文件中,我使用find_library命令来确定每个库的完整路径,将路径存储在列表变量中,并将该列表变量添加到命令中target_link_libraries。只要 OpenSSL 符号对我的应用程序可见,就可以了。
OpenSSL 进一步依赖于“动态链接加载器”库(又名libdl)。我知道 OpenSSL 构建使用了-ldl编译器选项,因为我可以在构建输出中看到它。
在我的 Linux 开发机器上,该libdl库似乎已经安装了。证据是:
libdl.so和libdl.so.2(它们是实际libdl-2-17.so库文件的符号链接)存在于似乎是此类内容的标准目录中: /usr/lib64 man dlclose,我得到了有关“动态链接加载器”库的预期手册页。但是,当我构建应用程序时,我收到如下链接器错误。libdl肯定找不到该库。
/usr/bin/ld: ../install/lib/libcrypto.a(dso_dlfcn.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
/usr/lib64/libdl.so.2: error adding symbols: DSO missing from command line
Run Code Online (Sandbox Code Playgroud)
cmake应该能够libdl.so自己找到吗?
在我的应用程序的 cmake 文件中,我可以使用find_library命令来确定库的完整路径libdl,并将该路径添加到target_link_libraries命令中。请注意,我不必给它路径提示。这可行,但感觉像是一种解决方法。
我是否有必要明确搜索 的完整路径libdl.so?
cmake …
短篇小说:我可以用Doxygen生成一个CHM文件.启动CHM文件,我发现内容和索引选项卡确实列出了这些类的页面,名称空间,类和成员.但是,单击"内容"和"索引"列表中的项目不会显示任何内容.
我在使用Windows 7 Professional SP1 64位的计算机上.
我使用Doxywizard在我的代码上运行Doxygen版本1.8.9.1.它正确生成HTML输出; 页面,命名空间,类和成员出现在文档中.
然后我进一步想要将HTML转换为压缩的HTML(CHM)文件.
我htmlhelp.exe从Microsoft网站下载了Microsoft HTML Help Workshop版本1.31(即版本4.74.8703)(https://msdn.microsoft.com/en-us/library/windows/desktop/ms669985 ( v= vs.85 ) .aspx).我运行了安装程序.随着安装程序的进行,出现一条弹出消息:
此计算机已有更新版本的HTML帮助.
但是,安装成功完成.而且,该hhc.exe程序在那里我告诉它安装.
我现在指定这些相关的Doxygen设置:
当我再次运行Doxygen时,它报告错误:
error: failed to run html help compiler on index.hhp
Run Code Online (Sandbox Code Playgroud)
该Foo.chm预期的位置生成的文件.但是,如上所述,它缺少很多内容.
我尝试hhc.exe在Doxygen生成的HHP文件上手动运行.它不表示任何错误.
C:\Program Files (x86)\Microsoft\HTML Help Workshop>hhc c:\test\html\index.hhp
Microsoft HTML Help Compiler 4.74.8702
Compiling c:\test\html\Foo.chm
Compile …Run Code Online (Sandbox Code Playgroud) 我的程序在Linux环境中运行,使用gcc 4.4.7版编译.
我正在使用realpath()"规范化"文件路径.我提供的每个目录和文件的路径realpath()肯定存在,这当然对于realpath()正常工作至关重要.
但是,有时realpath()会失败,错误代码为17,名称EEXIST,字符串描述"文件存在".
那令我困惑.当然它存在,我尖叫realpath().但是realpath()我的咆哮无动于衷.
文档realpath()在http://pubs.opengroup.org/onlinepubs/009695399/functions/realpath.html列出了导致失败的错误,但EEXIST不是其中之一.
为什么这样realpath()失败?
导致EEXIST错误的目录和文件路径的示例:
/alpha/bravo/charlie/delta/alpha/bravo/charlie/foo.txt../../charlie/foo.txt/alpha/bravo/Charlie/./foo.txt但这些示例并不是确定的,因为具有完全相同模式的其他文件在同一目录中将会成功.
对于哪个目录或文件将导致EEXIST错误,似乎没有任何押韵或理由.该错误通常仅发生在我尝试规范化的第一个文件路径上,然后不适用于后续文件路径.但是,我不能仅仅通过尝试再次规范化第一个文件来克服它; 错误将继续发生.
程序片段:
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h> // for PATH_MAX
using std;
string PathCanonicalize( string const & path )
{
string result;
char szResult[ PATH_MAX ];
::realpath( path.c_str(), szResult );
if …Run Code Online (Sandbox Code Playgroud) 我被迫在 Linux 环境中使用较旧的 cmake 版本 2.8.12。
作为预构建步骤,我必须将多个头文件从源目录复制到目标目录。我决定使用该add_custom_target条款。如果这本身就是坏主意,请告诉我。例如:
add_custom_target( prebuild
COMMENT "Prebuild step: copy other headers"
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/../other/include/alpha.h ${CMAKE_SOURCE_DIR}/include/other
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/../other/include/bravo.h ${CMAKE_SOURCE_DIR}/include/other
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/../other/include/charlie.h ${CMAKE_SOURCE_DIR}/include/other
)
add_executable( myapp main.cxx )
# My application depends on the pre-build step.
add_dependencies( myapp prebuild )
set_target_properties( myapp PROPERTIES COMPILE_FLAGS "-g" )
install( TARGETS myapp DESTINATION ${BIN_INSTALL_DIR} )
Run Code Online (Sandbox Code Playgroud)
列出每个头文件会很乏味。我知道如何搜索所有头文件并将它们放入列表变量中。例如。
file( GLOB other_headers "${CMAKE_SOURCE_DIR}/../other/include/*.h" )
Run Code Online (Sandbox Code Playgroud)
但是,如何将该列表变量放在子句中使用add_custom_target?
有没有办法在子句中复制多个文件add_custom_target?
有没有更好的方法来复制多个文件作为预构建步骤,这些文件可以成为我的应用程序构建的依赖项?
受限于旧版本的 cmake 限制了我的选择。以下是我尝试过但没有成功的事情。 …
在 ASP.NET MVC 5 Web 应用程序中,有一个 RouteConfig 类注册许多路由。到目前为止,在我看到的所有示例中,只有“默认”路由具有非空名称。URL 模式和默认路由值似乎足以将任何 URL 正确关联到控制器和要执行的操作。那么,命名路线有什么好处吗?用于调试或记录?只是为了自我记录代码?
例如:
public class RouteConfig
{
public static void RegisterRoutes( RouteCollection routes )
{
routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );
// Most pages.
routes.MapRoute( name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "home", action = "index", id = UrlParameter.Optional }
// A special page.
// Should the route have a name?
routes.MapRoute( name: "",
url: "special",
defaults: new { controller = "special", action = "index", HttpVerbs = HttpVerbs.Get } );
}
}
Run Code Online (Sandbox Code Playgroud)