C++中,如何在标准库的std::string和常用库(Qt,VC等)的QString之间进行选择?

假设一个场景:在写GUI程序的时候,如果GUI库和STL都提供了某个功能(比如容器字符串),应该如何在两个库之间选择?

做法是分层,比如分为frontend+core。开发core的时候只用STL,保证平台可移植性,并且编译为动态库。开发GUI frontend的时候与UI库紧密结合,尽量不用STL,和core交接的地方一律进行数据类型转换,不要顾虑转换开销。
BTW 这样的话一般在开发GUI frontend之前会先写CLI frontend,试验core的功能。

references

http://www.zhihu.com/question/22572053

时间: 2024-08-18 17:35:01

C++中,如何在标准库的std::string和常用库(Qt,VC等)的QString之间进行选择?的相关文章

【转】标准C++类std::string的内存共享和Copy-On-Write技术

1.             概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要检查你是否在复习时,你才真正捡起课本看书.这就是"拖延战术",直到你非要做的时候才去做. 当然,这种事情在现实生活中时往往会出事,但其在编程世界中摇身一变

实现std::string的ltrim、rtrim和trim方法

stl库的std::string类型没有提供常用的ltrim/rtrim/trim成员函数.下面的代码通过外部独立函数的形式实现了这些功能: 1 namespace { 2 bool isntspace(const char& ch) { 3 return !isspace(ch); 4 } 5 } // end of namespace 6 7 const string ltrim(const string& s) { 8 string::const_iterator iter = fi

std::string 是什么

#include "stdafx.h" #include <iostream> #include <string> using std::cout; using std::endl; using std::cin; using std::string; int main(void) { char chars1[20]; char chars2[20] = "jaguar"; string str1; string str2 = "p

.NET中是否可用标准模版库(STL)

分析问题 标准模版库(STL)实在惠普实验室开发出来的一套算法类库的集合,从概念上主要区分为三大部分: 1.算法(algorithm). 2.容器(container). 3.迭代器(iterrator). STL的设计都致力于打造通用的算法和类库,例如一个排序的算法,可能针对包含不同类型元素的集合进行排序.在C++中,这样的通用性需要依靠模版来实现,而在.NET中,则依靠泛型..NET中的STL类库有Wintellect团队开发完成,类库名称为Power Collections,作为一个通用的

[C/C++标准库]_[初级]_[如何实现std::string自己的Format(sprintf)函数]

场景: 1.  C语言有自己的sprintf函数,但是这个函数有个缺点,就是不知道需要创建多大的buffer, 这时候可以使用snprintf函数来计算大小,只要参数 buffer为NULL, count为0即可. 2.  这里实现std::string自己的sprintf也是用了snprintf的特性,先计算大小,再创建空间,之后存入std::string. 3.  还使用了C的可变参数特性. std::wstring Format(const wchar_t *format,...) { v

VC++6.0之标准using namespace std

最近一直在看由电子工业大学出版的吕老师编写的c<++语言程序设计(第三版)>,其中的程序代码书写我并不知道有一定的缺陷,我一直沉浸在他的书中,竟然没有再去看看其他的版本,原来新的C++已经明确提出不提倡用的一些规定这本书还在用,也是我在最近的做题陷入了一定的困境,很郁闷,后来在标准的习题中了解了一些编程代码书写规范.今天就好好学习一下标准的代码书写. 先来看看旧版的C++编程风格(就是目前我学的这本书) <font size="4"><span style

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf  动态库的后缀为*.so  静态库的后缀为 libxxx.a   ldconfig   目录名 转载自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格

Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库

前面为JSTL中的常用EL函数,后面的为具体演示实例! JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库. SUN公司制定的一套标准标签库的规范. JSTL标签库,是由一些Java类组成的. JSTL组成: JSTL –Core 核心标签库. 重点 JSTL – I18N - 国际化标签库.Internationalization- I18N JSTL – SQL – 数据库操作标签(有悖于MVC设计模式),现在都不用这个. JSTL - Fu

D语言调用C++中的std::string

在D语言中调用C++中的std::string , 需要使用 extern(C++,class)语法,该语法在DMD2.071版本中不支持,需要使用ldc1.1. 下载地址:https://github.com/ldc-developers/ldc/releases/ . 下载ldc2-1.1.0-alpha1-win32-msvc.zip 使用LDC2-1.1时,必须使用vs2015库文件,因为连接时需要. 下面使用visuald来测试一下调用std::string. 解压开LDC放在以下目录