stringstream

C++ int与string的转化

谁都会走 提交于 2020-02-20 11:44:03
转自:http://www.cnblogs.com/nzbbody/p/3504199.html int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X。 string前后加上双引号,告诉编译器把它当成一串字符来解释。 注意:对于字符,需要区分字符和字符表示的数值。比如:char a = 8;char b = '8',a表示第8个字符,b表示字符8,是第56个字符。 int转化为string 1、使用itoa(int to string) 1 //char *itoa( int value, char *string,int radix); 2 // 原型说明: 3 // value:欲转换的数据。 4 // string:目标字符串的地址。 5 // radix:转换后的进制数,可以是10进制、16进制等。 6 // 返回指向string这个字符串的指针 7 8 int aa = 30; 9 char c[8]; 10 itoa(aa,c,16); 11 cout<<c<<endl; // 1e 注意:itoa并不是一个标准的C函数,它是Windows特有的

C++中char,string与int类型转换

僤鯓⒐⒋嵵緔 提交于 2020-02-19 10:37:07
C++中char,string与int类型转换是一个不太好记的问题,在此总结一下,有好的方法会持续更新。 1.char与string char是基础数据类型,string是封装了一些操作的标准类,在使用上各有千秋。 1.1 char *或者char [ ]转换为 string时,可以直接赋值。 string x; string y; char *ptr1 = "sakura"; char ptr2[]= "waseda"; x = ptr1; y = ptr2; 1.2 string转换为char*或者char[ ]时,有3种方法。 1.2.1 使用string内置c_str()函数。注意不直接赋值,因为string类对象最后会析构导致左值成为空指针。附加结束符\0 string x = "waseda"; char *ptr; strcpy(ptr,x.c_str()); 1.2.2 使用string内置data()函数。不附加结束符\0 string x = "waseda"; char *ptr; strcpy(ptr,x.data()); 1.2.3 使用string内置copy()函数。不附加结束符\0 string str="waseda"; char ptr[10]; str.copy(ptr,5,0); 2.char与int 2.1 char数字 转int ,直接减

C++学习笔记七-流

北战南征 提交于 2020-02-13 09:09:09
C++ 的输入/输出(input/output)由标准库提供。标准库定义了一族类型,支持对文件和控制窗口等设备的读写(IO)。还定义了其他一些类型,使 string 对象能够像文件一样操作,从而使我们无须 IO 就能实现数据与字符之间的转换。这些 IO 类型都定义了如何读写内置数据类型的值。此外,一般来说,类的设计者还可以很方便地使用 IO 标准库设施读写自定义类的对象。类类型通常使用 IO 标准库为内置类型定义的操作符和规则来进行读写。 一、面向对象的标准库: iostream : istream 从流中读取 ostream 写到流中去 iostream 对流进行读写;从 istream 和 ostream 派生而来 fstream : ifstream 从文件中读取;由 istream 派生而来 ofstream 写到文件中去;由 ostream 派生而来 fstream 读写文件;由 iostream 派生而来 sstream : istringstream 从 string 对象中读取;由 istream 派生而来 ostringstream 写到 string 对象中去;由 ostream 派生而来 stringstream 对 string 对象进行读写;由 iostream 派生而来 二、国际字符的支持: 每一个 IO 头文件都定义了 char 和 wchar_t

《挑战30天C++入门极限》C++的iostream标准库介绍(2)

我的未来我决定 提交于 2020-02-13 04:59:53
C++的iostream标准库介绍(2)   接下来我们继续看一下 C++风格的串流控制 ,C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstream类用于执行C++风格的串流的输入操作。   stringstream类同时可以支持C++风格的串流的输入输出操作。   strstream类同时可以支持C风格的串流的输入输出操作。   istringstream类是从istream(输入流类)和stringstreambase(c++字符串流基类)派生而来,ostringstream是从ostream(输出流类)和stringstreambase(c++字符串流基类)派生而来,stringstream则是从iostream(输入输出流类)和和stringstreambase(c++字符串流基类)派生而来。   他们的继承关系如下图所示:   istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。   istringstream的构造函数原形如下:   istringstream::istringstream(string str); //程序作者:管宁 //站点:www.cndev-lab

c++----stringstream

杀马特。学长 韩版系。学妹 提交于 2020-02-08 17:18:15
sstream头文件定义了三个类型来支持内存IO, istringstream从string中读取数据,ostringstream向string写入数据,而头文件stringstream既可以从string读数据也可向string写数据。 stringstream 对象用于输入一行字符串,以 空格 为分隔符把该行分隔开来 。 # include <iostream> # include <string> //需要定义字符串变量 # include <sstream> using namespace std ; int main ( ) { string str = "hello world I am very happy!" ; stringstream sstream ( str ) ; //sstream<< while ( sstream ) { string substr ; sstream >> substr ; cout << substr << endl ; //也可vec.push_back(substr); } } 来源: CSDN 作者: qq_37957854 链接: https://blog.csdn.net/qq_37957854/article/details/104224006

sstream/stringstream/ss/字符串输入流

本小妞迷上赌 提交于 2020-02-06 05:13:11
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<sstream> using namespace std; const int maxn=10010; const int N=10; //输入数据的每行包括若干个(至少一个)以空格隔开的整数,输出每行中所有整数的和 //有两种解决方法 //1 用字符和字符数组 getchar() 边读入边计算,代码短,但是容易写错 //2 用string一次读入一行,计算一行 //stringstream 字符串流 可以将一个字符串变为流的形式 int main(){ string line; while(getline(cin,line)){ int sum=0,x; stringstream ss(line); while(ss>>x) sum+=x; cout<<sum<<endl; } return 0; } 来源: CSDN 作者: 栈, 链接: https://blog.csdn.net/qq_924485343/article/details/104188376

Formatting dates with stringstream

我与影子孤独终老i 提交于 2020-02-05 05:56:39
问题 I want to avoid the usage of sprintf in my C++ code so I can use only std strings from C++, but I haven't found the way to replace it yet. I currently use sprintf to format dates and times like this: char myDate[DATE_LENGTH]{}; sprintf(myDate, "%4d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second); In this way, I will get a fixed length for each integer, with leading zeros if needed. I have searched how to replace this with stringstream, and found this: std::ostringstream ss;

Formatting dates with stringstream

亡梦爱人 提交于 2020-02-05 05:56:08
问题 I want to avoid the usage of sprintf in my C++ code so I can use only std strings from C++, but I haven't found the way to replace it yet. I currently use sprintf to format dates and times like this: char myDate[DATE_LENGTH]{}; sprintf(myDate, "%4d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second); In this way, I will get a fixed length for each integer, with leading zeros if needed. I have searched how to replace this with stringstream, and found this: std::ostringstream ss;

Formatting dates with stringstream

大城市里の小女人 提交于 2020-02-05 05:55:08
问题 I want to avoid the usage of sprintf in my C++ code so I can use only std strings from C++, but I haven't found the way to replace it yet. I currently use sprintf to format dates and times like this: char myDate[DATE_LENGTH]{}; sprintf(myDate, "%4d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second); In this way, I will get a fixed length for each integer, with leading zeros if needed. I have searched how to replace this with stringstream, and found this: std::ostringstream ss;

Why does using std::endl with ostringstream affect output speed?

只谈情不闲聊 提交于 2020-01-22 14:04:06
问题 I'm timing the difference between various ways to print text to standard output. I'm testing cout , printf , and ostringstream using both \n and std::endl . I expected std::endl to make a difference with cout (and it did), but I didn't expect it to slow down output with ostringstream . I thought using std::endl would just write a \n to the stream and it would still only get flushed once. What's going on here? Here's all my code: // cout.cpp #include <iostream> using namespace std; int main()