我正在创建一个StreamWriter使用相对路径.但该文件没有出现.要进行故障排除,我想检查完整路径是否是我所期望的.所以有一个StreamWriter实例,我怎样才能得到它要写入的文件的完整路径?
string fileName = "relative/path.txt"
StreamWriter sw= new StreamWriter(fileName);
// What is the full path of 'sw'?
Run Code Online (Sandbox Code Playgroud) 我需要一个不允许重复的concurent集合(在BlockingCollection中用作Producer/Consumer).我不需要严格的元素顺序.从另一方面,我想最小化元素"活"在集合中的最大时间.即收集不能是LIFO,理想情况下它应该是FIFO.
好吧,我会说我需要ConcurrentQueue而不允许重复,但是没有重复的ConcurrentBag也可能有效.
为什么C#不包含这样的东西,可能有人已经创建了它?
这个问题是我之前的问题的结果是什么类型的IProducerConsumerCollection <T>用于我的任务?
我需要比较两个值.一个值price代表某物的当前价格,因此decimal您实际上可以按此价格买入或卖出某物.
另一个值是estimatedPrice数学计算的结果,double因为它只是estimation,你实际上不能做任何"操作"esitmatedPrice
现在我想买price < estimatedPrice.
那么我应该将价格加倍或估计价格为十进制吗?
我明白在投射后我会得到"轻微的另一个"数字,但似乎我没有其他选择.
我正在使用平台外观和在Linux上我的JTextArea非常易读但在Windows上它使用"Monospaced 9"并且文本非常小.
为什么以及解决这个问题的最佳方法是什么?
为什么默认的Windows外观在JTextArea中使用这么小的字体?
假设我有一些类似以下的枚举:
enum Towns { Rome, Napoli, Modena }
Run Code Online (Sandbox Code Playgroud)
我想为每个枚举成员关联一个字符串.理想情况下,字符串应该是描述.我想确保每个城镇都有描述:
Rome - Beautiful
Napoli - Good pizza
Modena - Ferrari store
Run Code Online (Sandbox Code Playgroud)
如果某个城镇没有描述,我还想让它给出编译时错误.
我正在尝试决定购买哪些显示器.无论如何我会买3台显示器,但我不确定我应该是23-24还是27英寸.
问题是 - 如果我可以在2台甚至3台显示器上使用VS 2012?它有多舒适?我可以使用"中央"监视器进行"编码",将左侧和/或右侧监视器用于其他所有内容吗?这样的设置有多舒适,如果可能的话?
理想情况下,我希望看到这样设置的"照片"或视频.
到目前为止,我正在使用一台27英寸的显示器,我对它非常满意.我正在考虑切换到3*24或3*27,因为没有其他程序的空间.但是只有一台24英寸的显示器对我来说太小了所以我想"花"至少2台24英寸显示器用于VS.
在我的应用程序中,我有很多日志.我确实在一个叫做的地方累积了所有日志中的所有错误errorsLogger.我用这种方式实现了它:
static Logger errorsLogger;
....
void Logger::Error(std::string format, ...) {
va_list arglist;
va_start(arglist, format);
if (this != &errorsLogger) {
errorsLogger.Error(format, arglist); // how to forward parameters?
}
vfprintf(logFile, , format.c_str(), arglist);
fprintf(logFile, "\n");
fflush(logFile);
va_end( arglist );
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码没有按预期工作errorsLogger包含一些奇怪的字符串 - 似乎变量参数没有传递.如何修复我的代码有效?
我从证券交易所收到"订单更新".每个订单ID介于1和100 000 000之间,因此我可以使用1亿个数组来存储1亿个订单,当收到更新时,我可以非常快速地从数组中查找订单,只需通过索引访问它arrray[orderId].我将花费几千兆字节的内存,但这没关系.
或者我可以使用hashmap,因为在任何时候"活动"命令的数量都是有限的(到,非常大致,100 000),查找也会非常快,但可能比数组慢一点.
问题是 - hashmap实际上会慢吗?是否合理地创造了1亿个阵列?
我需要延迟而没有别的,我完全不关心记忆,我应该选择什么?
我一直在使用Windows,拥有非常有限的Linux经验.
我的Visual Studio解决方案包含5个C++项目 - 其中4个是静态库,1个是主应用程序(使用这些静态库),我想将其移动到Ubuntu.
我没有使用任何特定于Windows的代码,因此只需稍作修改,我就可以在Linux下编译.这该怎么做?我应该在Linux下使用什么软件?我应该如何处理静态库,我应该继续在Linux中使用静态库吗?如何将Visual Studio解决方案转换为类似Linux的东西?
UPD如果我只是下载Eclipse在Linux中,然后通过文件文件,项目按项目,重建和VC++到Eclipse复制的一切?这应该工作,不是吗?我只有100-200个文件,因此可以手动完成.
我在我的项目中使用了boost.我从http://boost.teeks99.com/下载了预编译的二进制文件
链接时我收到这样的错误:
Error 18 error LNK2005: "public: void __cdecl boost::thread::join(void)" (?join@thread@boost@@QEAAXXZ) already defined in boost_thread-vc110-mt-1_52.lib(boost_thread-vc110-mt-1_52.dll) C:\Oleg\projects\MBClient\FastNativeAdapter\libboost_thread-vc110-mt-1_52.lib(thread.obj) FastNativeAdapter
为什么boost包含两个lib名字如此相似,它们之间的区别是什么?
如何修复链接错误?
upd我自己编译了提升.我已将boost_1_53_0\stage\lib目录添加到链接器.该目录实际上包含"每个"文件的3个"副本",例如:
所以很清楚编译器声称的内容.不知怎的,它无法理解要使用哪个版本的lib文件.它可能与静态/ dinamic链接有关,但我仍然找不到解决方案.我确定我的问题非常普遍,所以我希望有人可以建议我该怎么做.
我试图从文件夹中删除所有"libboost*"文件,但后来我收到这样的错误:
Error 15 error LNK1104: cannot open file 'libboost_date_time-vc110-mt-1_53.lib'
我试图从文件夹中删除所有"boost*lib"文件,但后来我收到了这样的错误:
Error 15 error LNK1104: cannot open file 'boost_thread-vc110-mt-1_53.lib'
然后我复制boost_thread-vc110-mt-1_53.lib回来,我收到很多错误:
Error 16 error LNK2005: "public: virtual __cdecl boost::detail::thread_data_base::~thread_data_base(void)" (??1thread_data_base@detail@boost@@UEAA@XZ) already defined in boost_thread-vc110-mt-1_53.lib(boost_thread-vc110-mt-1_53.dll)
因此,当没有boost_thread-vc110-mt-1_53.lib编译器声称它丢失时,当boost_thread-vc110-mt-1_53.lib编译器声称"功能已经定义"时.Probaly以某种方式我同时使用dinamic和static链接或类似的东西?
upd2我已#define BOOST_ALL_DYN_LINK按照此处的建议取消注释,现在代码编译!我正在调查其他一切是否正常.但是我不明白为什么我应该取消 …
c# ×3
c++ ×3
java ×2
.net ×1
algorithm ×1
boost ×1
collections ×1
concurrency ×1
jtextarea ×1
linux ×1
streamwriter ×1
swing ×1
visual-c++ ×1