English 中文(简体)
C++在何时使用什么?
原标题:C++ strings, when to use what?

It s been quite some time now that I ve been coding in C++ and I think most who actually code in C++, would agree that one of the most trickiest decisions is to choose from an almost dizzying number of string types available. I mostly prefer ATL Cstring for its ease of use and features, but would like a comparative study of the available options. I ve checked out SO and haven t found any content which assists one choosing the right string. There are websites which state conversions from one string to another, but thats not what we want here.

热衷于根据特殊性、性能、可携带性(Windows、Mac、LC/Unix等)、使用方便性/特性、多语文支持(Unicode/MBCS)、汇合(如果有)和其他任何特殊情况进行比较。

我罗列了我迄今为止所经历的str。 我认为,还会有更多的东西,因此,我们或许会 later忙这样做,以适应其他选择。 我先天主要在Windows上工作,因此名单也反映了同样的情况:

  1. char*
  2. std::string
  3. STL s basic_string
  4. ATL s CString
  5. MFC s CString
  6. BSTR
  7. _bstr_t
  8. CComBstr
最佳回答

不要说要把大坝放在你对此的热情上,但现实地说,它没有效率地将很多类型的扼杀混在一起,因此,该项目越大,就越难解决:鉴于这是唯一的标准价值-方法,因此,扼杀(这是对STL的描述,而不是一个不同的实体)的类型。 果园* 主要是固定型护卫(如铺面面、固定尺寸缓冲器)或与C交接。

我为什么说它效率不高? 最后,你以无谓的模板即时表示各种论点(甚至多次陈述)。 你们发现,要求将结果装入一个扼杀和掩饰的静电传功能;然后,必须为此而打电话......c_str(),并建造其他类型,进行多余的记忆分配。 甚至连组:铺设和铺设;如果使用ASCIIZ 果园,则需要临时护卫(例如,对其他一些护卫型缓冲)。 当你想写一个功能,处理某名电线员想要使用的类型时,你又转向模板,因此推向在线代码,更长的时间和校正(这是缓解这种情况的一些方法,但是,这些功能复杂,方便或自动化,往往需要改变各种强度的类型,例如投放操作员或成员恢复某些共同的接口/镜。

项目可能需要使用非标准型号与它们希望使用的图书馆进行互动,但你希望尽可能减少这种影响,并尽可能限制这种普遍性。

问题回答

C++号载体处理法的令人忧虑的故事令我难以撰写一篇论文,只是几个要点:

  • 劳教和中西太平洋渔业委员会是同样的事情(相同的法典和一切)。 他们几年前合并。

  • 如果你重新使用——bstr_t 或CComBstr,那么,除了向其他人发出使用《战略》的意向外,你很可能不会使用《战略》。

  • char* - fast, features include those that are in < cstring > header, error-prone (too low-level)

  • <代码>std:string - This is actual a categorydef for std:basic_string<char, char_traits<char>> 一个美丽的东西——首先,它也迅速发展。 第二,你可以使用所有的“斜线”;算法和gt法,因为基础设计为探测器。 得到广泛支持的还有另一种类型,wstring,即std:basic_string<wchar_t, char_traits<wchar_t>>。 因此(basic_string)是一种标准类型,是绝对可行的。 我这样说。

  • 劳教和中华教教士甚至不向导师提供食物,因此他们是我的一个 a子,因为他们是护卫周围的一间教室,设计得很糟。 IMHO

  • 不知道其余部分。

掌握这一部分信息有助于

显然,只有头三个是便携式的,因此,在大多数情况下,应当优先使用。 如果你重新做C++,那么你在大多数情况下应避免char *,因为原始点和阵列容易发生错误。 与低级别C(如系统电话或司机)的交流是例外。 顺便提一下,即IMHO,因为它与STL的其余部分非常好。

同样,如果你需要与例如合作的话,国际水道测量组织。 MFC, 您在担任WinApi公司职务时,应尽力做到如下:在您的业务逻辑中阐明<>/code>,并翻译到CString

第2和第3条相同。 第4和第5条也是一样的。 第7条和第8条是6条包装。 因此,可以论证的是,清单中仅包括C sstrings、C++标准方形、Microsoft s C++ strings和Microsoft s COM strings。 回答:在标准C++中,使用标准C++的载体(std:string)





相关问题
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 "...

热门标签