CString、std::string格式化字符串

=============================CString==================================

当有多个字串时,比如   
  int   n1   =   5;   
  int   n2   =   10;   
  char   sz1[]   =   "abcdefg";   
  char   sz2[]   =   "hijklmn";   
    
  用std中的string如何写出最简单的代码得到MFC中CString如下效果:   
    
  CString   s;   
  s.Format("   result:   %d   +   %d   =   %d/n   sz1:   %s/n   sz2:   %s/n",   n1,   n2,   n1+n2,   sz1,   sz2   );

===========================std::string==================================

int   n1   =   5;   
int   n2   =   10;   
char   sz1[]   =   "abcdefg";   
char   sz2[]   =   "hijklmn";           
          std::ostringstream   ostr;   //   include   <sstream>   
          ostr   <<   "result:"   <<   n1   <<   "+"   <<   n2   <<   "="   <<   n1+n2     
                    <<   "/nsz1:"   <<   sz1   
                    <<   "/nsz2:"   <<   sz2;   
          //std::cout   <<   ostr.str().c_str()   <<   std::endl;

std::string s = ostr.str();

附加说明

在C++有两种   
  一个是在<sstream>另一个是<strstream>它们实现的东西基本一样,   区别是前者为前标准.   
  而前标准里ostringstream::str()是返回std::string的.   
    
  <strstream>包含   
    class   strstreambuf;   
    class   istrstream;   
    class   ostrstream;   
    class   strstream;   
  它们是基于char*编写的   
    
  <sstream>   
  class   istringstream;   
  class   ostreamstream;   
  class   stringbuf;   
  class   stringstream;   
  class   ...   
  ....   
  它们是基于std::string编写的.

时间: 2024-10-09 23:23:44

CString、std::string格式化字符串的相关文章

[C/C++] String Reverse 字符串 反转

#include <iostream> #include <string> #include <algorithm> #include <cstring> inline void STL_Reverse(std::string& str) // 反转string字符串 包装STL的reverse() 可以inline { reverse(str.begin(), str.end()); // STL 反转函数 reverse() 的实现 /* tem

std::string在多字节字符集环境下substr的实现方法

昨天写到<使用多字节字符集的跨平台(PC.Android.IOS.WP)编码/解码方法>中提到服务端使用std::string处理字符串,std::string对多字节字符集支持并不是很完善,std::string中的函数没有对多字节字符集进行直接的支持. 例如直接调用std::string的substr函数,就会导致某些情况下截取的字符串尾部产生非法字符. GB系列多字节字符集基础知识: VC环境下工程设置为多字节字符集,默认使用的是GBK编码,GB2312.GBK.GB18030,这3个都

实战c++中的string系列--std::string与MFC中CString的转换

搞过MFC的人都知道cstring,给我们提供了很多便利的方法. CString 是一种很有用的数据类型.它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多.不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习. 但是很多情况下,我们还是需要cstring和string的转换. 分两步: 1把cstring转为char数组 2根据char数组,构造自己的string(记得释放内存) std::string CStringT

将格式化字符串赋给stl::string

代码很简单,就不解释了,直接上代码: #include <cstdio> #include <cstdarg> #include <iostream> using namespace std; //功能:将格式化字符串赋给stl::string //参数:和printf的参数一样 //返回值:返回格式化后的string类 string StringFormat(const char *format, ...) { string result; //将字符串的长度初始化为

std::string 和 CString问题

std::string stdTemp; CString strTemp; strTemp = stdTemp;    ;//这一步直接赋值可不可以 因为CString可以接受const char*的赋值,而且std::string有个返回const char*的方法,c_str(),所以,应该这样写: strTemp = stdTemp.c_str();

CString 与 std::string 相互转化

MFC中CString 与 std::string 相互转化 CString实际是CStringT, 也就是模板类, 在UNICODE环境下,实际是CStringW, 在多字符集环境下,实际是CStringA std::string就是多字符集的. UNICODE环境下 CStringW-->std::string CString实际是CStringW,要转换成多字符集,需进行转码.使用WideCharToMultiByte 转换成多字符集,然后再构造std::string std::strin

string.format格式化字符串中转义大括号“{}”

用C#写程序操作Excel,读取单元格内容根据所需格式生成字符串,使用String.Format(string format,object arg0)方法.以前只知"{0}"为索引占位符(即格式项),与参数列表中的第一个对象相对应,格式设置过程将每个格式项替换为对应对象的值的文本表示形式.但这次需将参数对象格式成一对大括号括起来的格式,即返回字符串"{对象arg0的文本表示形式}". //直接加大括号 String.Format("{{0}}",

详谈Format String(格式化字符串)漏洞

格式化字符串漏洞由于目前编译器的默认禁止敏感格式控制符,而且容易通过代码审计中发现,所以此类漏洞极少出现,一直没有笔者本人的引起重视.最近捣鼓pwn题,遇上了不少,决定好好总结了一下. 格式化字符串漏洞最早被Tymm Twillman在1999年发现,当时并未引起重视.在tf8的一份针对wu-ftpd格式化字符串漏洞实现任意代码执行的漏洞的报告之后(详情可参阅 <黑客攻防技术宝典-系统实战篇>),才让人们意识到它的危害,至此而发现了大量的相关漏洞. 格式化字符串漏洞的产生根源主要源于对用 户输

string.Format字符串格式化说明(转)

string.Format字符串格式化说明 www.111cn.net 编辑:Crese 来源:转载 先举几个简单的应用案例: 1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0.20) 默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数string.Format("{0:C1}",23.15) 结果为:¥23.2