Articles of Linux操作系统

boost :: filesystem和Unicode在Linux和Windows下

以下程序在Windows下的Visual Studio 2008中进行编译,都使用字符集“使用Unicode字符集”和“使用多字节字符集”。 但是,它不能在Ubuntu 10.04.2 LTS 64位和GCC 4.4.3下编译。 我在两种环境下都使用Boost 1.46.1。 #include <boost/filesystem/path.hpp> #include <iostream> int main() { boost::filesystem::path p(L"/test/test2"); std::wcout << p.native() << std::endl; return 0; } Linux下的编译错误是: test.cpp:6:错误:在'std :: wcout << p.boost :: filesystem3 :: path :: native()'中找不到'operator <<' 它看起来像我在Linux下boost :: filesystem不提供宽的string在path::本地(),尽pipeboost :: filesystem ::path已被初始化为一个宽string。 此外,我猜这是因为Linux默认为UTF-8和Windows到UTF-16。 所以我的第一个问题是,如何编写一个使用boost :: filesystem的程序,并在两个平台上支持Unicodepath? 第二个问题:当我在Windows下运行这个程序时,它输出: /test/test2 我的理解是native()方法应该将path转换为Windows下的本地格式,这是使用反斜杠而不是正斜杠。 为什么string以POSIX格式出现?

在Unix下创build的文件的Windows下使用fstream :: seekg

我有一个C ++跨平台的程序(用Linux下的g ++和PC下的Visual Studio编译)。 该程序将行写入文本文件(使用<< operator和std::endl ),但也可以从生成的文本文件(使用std::getline )读回数据。 为了优化数据访问和节省内存,在读取数据文件时,我第一次读取数据并在程序中保存数据位置。 当需要数据时,我稍后使用seekg移动到特定位置并读取数据。 在PC上创build和读取文件工作正常。 在Linux上创build和读取文件工作正常。 但是在Linux上创build文件并在PC上阅读失败。 在PC下,seekg有时无法相应地移动光标。 我可以在下面的例子中找出问题。 它读取文件一次,保存第二个位置和值,然后移回保存的位置并再次读取该行。 #include <fstream> #include <iostream> #include <string> #include <assert.h> int main() { std::fstream file; file.open( "buglines.txt", std::ios_base::in ); if ( file.is_open() ) { std::streampos posLine2; std::string lineStr; std::string line2Str; int line = 1; while ( std::getline( file, lineStr ) ) […]

如何在Ruby中分割一个目录string?

在ruby,我能够做到 File.dirname("/home/gumby/bigproject/now_with_bugs_fixed/32/FOO_BAR_2096.results") 并得到 "/home/gumby/bigproject/now_with_bugs_fixed/32" 但现在我想将目录string拆分成单独的文件夹组件,即类似的东西 ["home", "gumby", "bigproject", "now_with_bugs_fixed", "32"] 有没有办法做,而不是使用 directory.split("/")[1:-1]

Ada程序在Linux中运行,但不在GPS Windows 10中运行

在此先感谢您的帮助。 我目前正在做一些关于ada编程的初学者工作,我已经从http://libre.adacore.com/download/configurations#安装了GNAT编程工作室(GPS)。我有Windows 10 64位。 我在学校获得了以下代码: pragma Task_Dispatching_Policy(FIFO_Within_Priorities); with Ada.Text_IO; use Ada.Text_IO; with Ada.Real_Time; use Ada.Real_Time; procedure PeriodicTasks is Start : Time; package Duration_IO is new Ada.Text_IO.Fixed_IO(Duration); package Int_IO is new Ada.Text_IO.Integer_IO(Integer); task type T(Id: Integer; Period : Integer) is pragma Priority(Id); end; task body T is Next : Time; X : Integer; begin Next := […]