我使用C++语言环境方面的工作越多,我理解的就越多 - 它们就被打破了.
std::time_get- 与std::time_put(因为它在C strftime/strptime中)不对称,并且不允许使用AM/PM标记轻松解析时间.ru_RU.UTF-8).std::ctype 假设可以在每个字符的基础上完成上/下更新(情况转换可能会改变字符数并且它取决于上下文),这是非常简单的.std::collate - 不支持校对强度(区分大小写或不区分大小写).以及更多...
谢谢.
编辑:澄清链接无法访问:
std::numpunct将千位分隔符定义为char.因此,当U + 2002中的分隔符 - 不同类型的空间时,它不能作为单个字符在UTF-8中再现,而是作为多字节序列.
在C API中,struct lconv将千位分隔符定义为字符串,并且不会遇到此问题.因此,当您尝试使用UTF-8语言环境在ASCII之外的分隔符格式化数字时,会生成无效的UTF-8.
要重现此错误,请使用imbued ru_RU.UTF-8locale 将1234写入std:ostream
EDIT2:我必须承认POSIX C本地化API工作得更顺畅:
std::time_put::put)然而,它仍然是完美的.
编辑3:根据有关C++ 0x的最新说明,我可以看到std::time_get::get- 与...类似strptime和相反std::time_put::put.
我正在使用pthreads-win32来允许对windows进行线程支持.
我有一个使用pthreads的跨平台项目,我想让它在各种编译器和不同操作系统版本的Windows上工作.
至少,根据文档,pthreads-win32应该与MSVC一起工作,甚至提供MSVC构建.
但我不知道该库是否使用最新的MSVC编译器(如MSVC-2008)进行测试,以及是否支持64位窗口.
根据您自己的经验,您是否了解此库存在的任何问题?
笔记:
我只需要了解pthreads-win32的局限性.
是否有一个好的,开源的,记录的CMake模块用于gettext支持?
我的意思是:
因为CMake提供的普通宏对于真正的l10n支持来说是无用的.
任何人?
编辑:我为自己的项目创建了自己的cmake规则,但我认为这不是长期解决方案,尤其是当你有多个项目时.
如果有人指导我这样的模块,那将会非常有帮助.
当文件名是"Unicode"文件名时,我需要打开一个文件作为std :: fstream(或实际上任何其他std :: ostream).
在MSVC下我有非标准的扩展名std::fstream::open(wchar_t const *,...)?我可以用其他编译器做什么,比如GCC(最重要的)和Borland编译器.
我知道CRTL提供_wfopen但是它提供了C FILE *接口而不是io-stream,也许有一种非标准的方法来创建io-stream FILE *?有没有boost::ifstream像MSVC一样的Windows扩展?
如何强制Doxygen显示完整的包含路径?
我的意思是:
我在以下目录结构中foo::bar::bee定义了一个类bee.hpp:
foo
foo/bar
foo/bar/bee.hpp
Run Code Online (Sandbox Code Playgroud)
Doxygen,当它文档foo::bar::bee类告诉你需要包含<bee.hpp>,但对于我需要的软件<foo/bar/bee.hpp>
我怎么能让Doxygen这样做?有没有选项提供"包括标志",如"-I"所以doxygen会知道基地在哪里?
笔记:
FULL_PATH_NAMES 已设置为默认值 YES谢谢.
回答
组:
STRIP_FROM_INC_PATH = relative/path/to/include/directory
Run Code Online (Sandbox Code Playgroud) 根据RFC,在multipart/form-data content-disposition头文件名字段中接收作为参数的HTTP引用字符串 - 字符串之间的字符串'\'可以转义任何其他ascii字符.
问题是,Web浏览器不这样做.
IE6发送:
Content-Disposition: form-data; name="file"; filename="z:\tmp\test.txt"
Run Code Online (Sandbox Code Playgroud)
而不是预期
Content-Disposition: form-data; name="file"; filename="z:\\tmp\\test.txt"
Run Code Online (Sandbox Code Playgroud)
哪个应该z:tmptest.txt按照规则解析而不是z:\tmp\test.txt.
Firefox,Konqueror和Chrome不会逃脱"角色":
Content-Disposition: form-data; name="file"; filename=""test".txt"
Run Code Online (Sandbox Code Playgroud)
而不是预期
Content-Disposition: form-data; name="file"; filename="\"test\".txt"
Run Code Online (Sandbox Code Playgroud)
那么......你会如何建议处理这个问题?
有人有想法吗?
是否存在MSVC的依赖关系生成标志,如gcc的-M标志.
我用过的每个C++编译器都有这种标志.如何使用MSVC cl编译器自动创建依赖项.
我正在从批处理文件运行测试脚本.
因为它是测试,程序预计会偶尔失败.只要返回错误代码就是文件,所以我可以继续并将特定测试标记为失败.
但是,在Microsoft Windows下可执行文件的行为非常烦人 - 如果出现问题,弹出窗口就像:
此应用程序无法启动,因为找不到foo.dll,重新安装应用程序可能会解决问题
<OK>
甚至更好:
"......"处的指令引用"..."处的内存.
单击OK以终止程序
单击CANCEL以调试程序
结果是已知的 - 脚本执行阻止,直到有人按下"确定"按钮.当我们谈论可能在某些无头虚拟机中自动运行的自动脚本时,可能会出现问题.
有没有一种简单的方法来防止这种行为,只是让应用程序退出失败代码 - 而不改变程序本身的代码?
这有可能吗?
可能重复:
这些奇怪的环境变量是什么?
我正在尝试使用GetEnvironmentStrings Win32API函数来获取环境变量,并且我收到了一些非常奇怪的key = value对(用[]括起来的示例):
[=::=::\]
[=C:=C:\Users\username\value]
[=ExitCode=00000001]
[ALLUSERSPROFILE=C:\ProgramData]
[APPDATA=C:\Users\artik\AppData\Roaming]
[CommonProgramFiles=C:\Program Files (x86)\Common Files]
[CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files]
[CommonProgramW6432=C:\Program Files\Common Files]
...
Run Code Online (Sandbox Code Playgroud)
显然它似乎不是环境字符串的正确值,如那里所述http://msdn.microsoft.com/en-us/library/windows/desktop/ms683187%28v=vs.85%29.aspx
问题:
=ExitCode为什么这样的特殊变量,例如getenv()不显示它们(getenv("=ExitCode")返回NULL)有一个标题Max-Age,允许指定cookie的到期时间.不幸的是,Internet Explorer 6,7,8以及之后可能不支持Max-Age,并要求Expits标题以GMT为绝对日期.
特定客户端上的GMT时间和TZ设置可能不正确并不罕见.考虑未正确定义其时区的用户并手动调整时钟.
更重要的是,有时可能存在很多分钟的显着时钟偏差,用户不知道它们.
在这种情况下,其GMT时间可能会转移到几个小时.实际上,它会阻止服务器设置任何需要较短过期时间的cookie.如果TZ不正确,请考虑永远不会设置最长10分钟的cookie.
关于如何解决问题的原创想法(不起作用或有问题):
问题: