English 中文(简体)
在遗产C++ Win32 DLL中,没有找到更好的办法?
原标题:Null terminated strings in a legacy C++ Win32 DLL - is there a better way?

我试图在C++没有规划十多年后,在遗留的C++ Win32 DL中添加适当的错误报告。

This has been a forcible reminder of the incredible tedium of working with null terminated strings in C/C++ - not to mention the potential buffer overrun and security problems.

Im考虑使用一个更先进的图书馆——可能的话说是MFC CString或STL图书馆。

<><>Edit>>

DLL是使用我们软件的旧版本——在C++中书写;新版本——在C#中书写。

汇编者为VS2008。

第一个通道是Im 通往标准视窗户的伐木,因为向DLs客户传递错误信息将是一个大的建筑变化(目前的建筑是可怕的,多种故障模式被瓦解为一个单一的 b形通行证/帆船回报值,而这一价值被完全用来支持电线。 不用说,这就使问题被诊断为恶梦。 但是,我很想在稍后日期改进这一点。

<String Library Questions

由于这是一部DLL,这是否是一个好的想法?

是否对DLs有特别考虑?

我应该知道吗?

一个图书馆是否比另一个图书馆更好?

<>0>Null String Questions

如果我停下来,哪一套扼杀功能? MS帮助 docs阻止使用旧的C功能(例如剧团等)。 但现在还有很多其他选择(例如:_tcscat、_mbscat、wcscat等)。 我应该使用什么,为什么?

最佳回答

分享来自DL的任何类型的模板类别都很危险。 由于模板放在标题档案中,你无法控制该方案是否使用与你的DL一样的头盔——一种不匹配会导致致命的 b。

至于_tcscat、_mbscat和wcscat之间的区别,你需要决定为您的APIC设定的特性。 <代码>_mb功能使用大多数过时的多维特性套和wc功能使用wchar_t Unicode。 <代码>_t功能将视你如何确定项目定义而定,确定一个或多个功能。

问题回答

这确实取决于你想要增加哪类错误,以及报告是否刚刚在德卢拉内,或者是否跨越德洛法边界进入所谓的EXE。 你可以使用你想要INSIDE的多功能和密码的任何扼杀级/图书馆,但对于输出的DVD职能和警示的参数,你应当保持使用无名的特性点,以便与多种编造者和语文兼容。

如果你谨慎行事,你总是能够转换使用<代码>的以下任何内容:扼制的构造者,并转换与str.c_str(>的任何东西。





相关问题
Simple JAVA: Password Verifier problem

I have a simple problem that says: A password for xyz corporation is supposed to be 6 characters long and made up of a combination of letters and digits. Write a program fragment to read in a string ...

Case insensitive comparison of strings in shell script

The == operator is used to compare two strings in shell script. However, I want to compare two strings ignoring case, how can it be done? Is there any standard command for this?

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

String initialization with pair of iterators

I m trying to initialize string with iterators and something like this works: ifstream fin("tmp.txt"); istream_iterator<char> in_i(fin), eos; //here eos is 1 over the end string s(in_i, ...

break a string in parts

I have a string "pc1|pc2|pc3|" I want to get each word on different line like: pc1 pc2 pc3 I need to do this in C#... any suggestions??

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签