stringstream(stringstream clear)

http://www.itjxue.com  2023-01-28 13:08  来源:未知  点击次数: 

c++ MessageBox输出stringstream型数据

正确的做法是先转换成c风格的字符串再转换成宽字符。

而转换为宽字符最方便的就是使用ATL转换宏,例子如下:

#include?windows.h

#include?sstream

#include?atlconv.h

using?namespace?std;

int?main()?{

stringstream?ostr("这是宽字符");

USES_CONVERSION;

MessageBox(NULL,?A2W(ostr.str().c_str()),?TEXT("验证码"),?MB_OK);

}

如何判断一个stringstream为空

istringstream iss(str);

while (iss strTemp)

{

}

不是空的就会进入大括号内

c++字符串流stringstream按行读取如何实现?

1、利用C++按行读取文本文件其实很简单。假设有一个文本文件,如下所示:

1 2 3

2 3 4

3 4 5

5 6 7

7 8 9

文件名为split.txt

目的:按照行读取数据,并一个个的显示出来。

2、例程:

#include?iostream

#include?sstream

#include?fstream

#include?string

int?main(int?args,?char?**argv)

{

std::ifstream?fin("split.txt",?std::ios::in);

char?line[1024]={0};

std::string?x?=?"";

std::string?y?=?"";

std::string?z?=?"";

while(fin.getline(line,?sizeof(line)))

{

std::stringstream?word(line);

word??x;

word??y;

word??z;

std::cout??"x:?"??x??std::endl;

std::cout??"y:?"??y??std::endl;

std::cout??"z:?"??z??std::endl;

}

fin.clear();

fin.close();

return?0;

}

stringstream的用法

stringstream的基本用法\x0d\x0a\x0d\x0astringstream是字符串流。它将流与存储在内存中的string对象绑定起来。\x0d\x0a在多种数据类型之间实现自动格式化。\x0d\x0a\x0d\x0a1.stringstream对象的使用\x0d\x0a\x0d\x0a#include\x0d\x0a#include\x0d\x0ausing namespace std;\x0d\x0aint main()\x0d\x0a{\x0d\x0a string line,word;\x0d\x0a while(getline(cin,line))\x0d\x0a {\x0d\x0a stringstream stream(line);\x0d\x0a coutstream.str()word){coutwordendl;}\x0d\x0a }\x0d\x0a return 0;\x0d\x0a}\x0d\x0a\x0d\x0a输入:shanghai no1 school 1989\x0d\x0a输出:shanghi no1 school 1989\x0d\x0a shanghai\x0d\x0a  no1\x0d\x0a  school\x0d\x0a  1989\x0d\x0a\x0d\x0a2.stringstream提供的转换和格式化\x0d\x0a程序:\x0d\x0a\x0d\x0a#include\x0d\x0a#include\x0d\x0ausing namespace std;\x0d\x0aint main()\x0d\x0a{\x0d\x0a int val1 = 512,val2 =1024;\x0d\x0a stringstream ss;\x0d\x0a ss"val1: "val1endl //“val1: "此处有空格,字符串流是通过空格判断一个字符串的结束\x0d\x0a "val2: "val2endl;\x0d\x0a coutdumpa\x0d\x0a dumpb;\x0d\x0a couta" "bendl;\x0d\x0a return 0;\x0d\x0a}\x0d\x0a\x0d\x0a输出为:val1: 512\x0d\x0aval2: 1024\x0d\x0a512 1024\x0d\x0a第一处黑体字部分:将int类型读入ss,变为string类型\x0d\x0a第二处黑体字部分:提取512,1024保存为int类型。当然,如果a,b声明为string类型,那么这两个字面值常量相应保存为string类型\x0d\x0a\x0d\x0a3.其他注意\x0d\x0astringstream不会主动释放内存(或许是为了提高效率),但如果要在程序中用同一个流,反复读写大量的数据,将会造成大量的内存消 耗,因些这时候,需要适时地清除一下缓冲 (用 stream.str("") )\x0d\x0a\x0d\x0a#include \x0d\x0a#include\x0d\x0a#include\x0d\x0ausing namespace std;\x0d\x0aint main()\x0d\x0a{\x0d\x0a stringstream ss;\x0d\x0a string s;\x0d\x0a sss;\x0d\x0a cout"size of stream = "ss.str().length()endl;\x0d\x0a cout"s: "sendl;\x0d\x0a ss.str("");\x0d\x0a cout"size of stream = "ss.str().length()endl;\x0d\x0a}\x0d\x0a\x0d\x0a输出:\x0d\x0asize of stream = 19\x0d\x0as: shanghai\x0d\x0asize of stream = 0

c++ 如何将string 转化int的方法

有两种方法

1.

c++中string到int的转换

1)

在C标准库里面,使用atoi:

#include

cstdlib

#include

string

std::string

text

=

"152";

int

number

=

std::atoi(

text.c_str()

);

if

(errno

==

ERANGE)

//可能是std::errno

{

//number可能由于过大或过小而不能完全存储

}

else

if

(errno

==

????)

//可能是EINVAL

{

//不能转换成一个数字

}

2)

在C++标准库里面,使用stringstream:(stringstream

可以用于各种数据类型之间的转换)

#include

sstream

#include

string

std::string

text

=

"152";

int

number;

std::stringstream

ss;

ss

text;//可以是其他数据类型

ss

number;

//string

-

int

if

(!

ss.good())

{

//错误发生

}

ss

number;//

int-string

string

str

=

ss.str();

if

(!

ss.good())

{

//错误发生

}

望采纳哦,亲

怎么输出字符串流(stringstream)的子串,即提取部分字符串

std::stringstream ss;

ss "cdefg";

cout ss.str() endl; // cdefg

string c = ss.str().substr(1,2);

cout c endl; // de

我自己用是先转成字符串再进行接取的。

(责任编辑:IT教学网)

更多

推荐其他源码文章