stringstream.str()字符串用法的陷阱

在编写应用程序时,我们经常要使用到字符串。C++标准库中的<string>和<sstream>为我们 操作字符串提供了很多的方便,例如:对象封装、安全和自动的类型转换、直接拼接、不必担心越界等等。但 今天我们并不想长篇累牍得去介绍这几个标准库提供的功能,而是分享一下stringstream.str()的一个有趣的 现象。我们先来看一个例子:

1 #include <string>
2 #include <sstream>
3 #include <iostream>
4
5 using namespace std;
6
7 int main()
8 {
9 stringstream ss("012345678901234567890123456789012345678901234567890123456789");
10 stringstream t_ss("abcdefghijklmnopqrstuvwxyz");
11 string str1(ss.str());
12
13 const char* cstr1 = str1.c_str();
14 const char* cstr2 = ss.str().c_str();
15 const char* cstr3 = ss.str().c_str();
16 const char* cstr4 = ss.str().c_str();
17 const char* t_cstr = t_ss.str().c_str();
18
19 cout << "------ The results ----------" << endl
20 << "cstr1:\t" << cstr1 << endl
21 << "cstr2:\t" << cstr2 << endl
22 << "cstr3:\t" << cstr3 << endl
23 << "cstr4:\t" << cstr4 << endl
24 << "t_cstr:\t" << t_cstr << endl
25 << "-----------------------------" << endl;
26
27 return 0;
28 }

时间: 2024-10-22 00:44:07

stringstream.str()字符串用法的陷阱的相关文章

Java中的字符串用法小结_java

本文实例总结了Java中的字符串用法.分享给大家供大家参考.具体分析如下: 字符串的本质是char类型的数组,但在java中,所有用双引号""声明的字符串都是一个String类的对象.这也正体现了Java完全面向对象的语言特点. String 类 1.String类对象表示的是一个常量字符串.它是不可变长度的.也就是说,一旦创建了一个String类的实例,那么这个实例所表示的串是不可改变的.类似于 str = str + "Hello"; 这样的操作,实质上是将 s

标准数字格式字符串用法说明及举例

标准|字符串 // 标准数字格式字符串用法说明及举例class NumberFormat{  static void Main()  {    // {index[,alignment][:format]}    // index     - 从零开始的整数,指示对象列表中要格式化的元素.    // alignment - 可选整数,指示最小宽度,不足部分用空格填充.负数指示左对齐,正数指示右对齐.    // format    - 格式字符串.标准数字格式字符串采取"Axx"形式

STL——字符串用法详解

      字符串是程序设计中最复杂的变成内容之一.STL string类提供了强大的功能,使得许多繁琐的编程内容用简单的语句就可完成.string字符串类减少了C语言编程中三种最常见且最具破坏性的错误:超越数组边界:通过违背初始化或被赋以错误值的指针来访问数组元素:以及在释放了某一数组原先所分配的存储单元后仍保留了"悬挂"指针. string类的函数主要有:      Member functions (constructor) Construct string object (pu

JavaScript数组和字符串用法介绍

一.数组 (1)检测数组 对于一个全局作用域来说,使用instanceof操作符可以检测某个对象是不是数组:  代码如下 复制代码 if (value instanceof Array){    //        }   但如果网页中存在多个框架,实际上就存在多个不同的全局作用域,从而存在多个不同版本的Array构造函数.如果从一个框架向另一个框架传入一个数组,以上操作符便不起作用.ES5新增的Array.isArray()方法可以确定某个对象到底是不是数组,而不管它是在哪个全局作用域中创建的

C#中Split分割字符串用法与常见问题

1.用字符串分隔: using System.Text.RegularExpressions; string str="aaajsbbbjsccc"; string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase); foreach (string i in sArray) Response.Write(i.ToString() + "<br>"); 输出结果: aaa bb

python字符串用法学习笔记

字符串格式化:  代码如下 复制代码 format = "hello %s, %s enough for ya?" values = ('world','hot') print format % values 结果:hello world, hot enough for ya? 注:如果不是在命令行执行,把print后面的用括号括起来 与php类似但函数或方法名不一样的地方: explode/" target="_blank">php explode

getline(cin,str)与cin.getline(str)的用法

cin.getline()函数是处理数组字符串的,其原型为cin.getline(char * , int),第一个参数为一个char指针,第二个参数为数组字符串长度. getline(cin,str)函数是处理string类的函数.第二个参数为string类型的变量. 在用getline(cin,str)时需注意,再输入str后需要两个回车才会输出结果,其原因是vc++6.0版本过低,解决办法可以百度,当然也可以换其他编译器,例如:vs! #include<iostream> #includ

STL之一:字符串用法详解

    字符串是程序设计中最复杂的变成内容之一.STL string类提供了强大的功能,使得许多繁琐的编程内容用简单的语句就可完成.string字符串类减少了C语言编程中三种最常见且最具破坏性的错误:超越数组边界:通过违背初始化或被赋以错误值的指针来访问数组元素:以及在释放了某一数组原先所分配的存储单元后仍保留了"悬挂"指针.     string类的函数主要有:      Member functions (constructor) Construct string object (

php的字符串用法小结_php技巧

1 求长度,最基本的 $text = "sunny day"; $count = strlen($text); // $count = 9 2 字符串截取 截取前多少个字符 $article = "BREAKING NEWS: In ultimate irony, man bites dog."; $summary = substr_replace($article, "...", 40); 3 算单词数 $article = "BRE