stringstream(stringstream clear)
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
我自己用是先转成字符串再进行接取的。