stringstream

Does stringstream.read() consume the stream?

泄露秘密 提交于 2020-05-15 02:05:53
问题 I can't tell from the documentation how std::stringstream.read() works. Does it consume the stream or not? In other words: std::stringstream ss; char buffer[6]; ss << "Hello world!"; ss.read(buffer, 6); std::cout << ss.str(); // Is this "Hello world!" or just "world!" 回答1: The member std::istream::read() advances the stream position for as many characters it returns. I guess, this is what you mean with "consuming the stream". After reading 6 characters from ss , the next character read will

Stringstream c++ while loop

穿精又带淫゛_ 提交于 2020-05-13 13:37:08
问题 Program finds integeres between commas like "2,33,5" -> 2 33 5. The problem is why is it working if I put for example string like "0,12,4". shouldn't the stringstream put 0 into tmp so the loop was like while(0) at the beginning? vector<int> parseInts(string str) { stringstream ss(str); //getting string vector<int> result; char ch; int tmp; while(ss >> tmp) { //while(IS IT INTEGER ALREADY OR NOT?) result.push_back(tmp); ss >> ch; } return result; 回答1: shouldn't the stringstream put 0 into tmp

[C++] string int

风格不统一 提交于 2020-04-06 06:51:17
int2string 在#include<string>中自带函数 to_string(); 对于自写to_string函数,可以采用stringstream. int a = 10; stringstream b; b<<a; string c = b.str(); #include<sstream> 在循环中,或者重复,使用stringstream时,要先清空!!! stringstream b; b.clear();b.str(""); //清空 在stringstream中,.clear仅仅是清空stringstream的状态(如出错等状态信息),清空内容还是需要.str("");方法。 string2int string a = "234"; int b = atoi(a.c_str()); cout<<b; 在C++中更推荐使用流对象来实现类型转换。 string a = "123"; //char* a = "213"; stringstream c(a); int e = 0; c >> e; 来源: https://www.cnblogs.com/zhanxiage1994/p/6986722.html

stringstream读入-最优乘车

女生的网名这么多〃 提交于 2020-03-30 15:34:49
最优乘车 H城是一个旅游胜地,每年都有成千上万的人前来观光。 为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴士线路。 每条单程巴士线路从某个巴士站出发,依次途经若干个巴士站,最终到达终点巴士站。 一名旅客最近到H城旅游,他很想去S公园游玩,但如果从他所在的饭店没有一路巴士可以直接到达S公园,则他可能要先乘某一路巴士坐几站,再下来换乘同一站台的另一路巴士, 这样换乘几次后到达S公园。 现在用整数1,2,…N 给H城的所有的巴士站编号,约定这名旅客所在饭店的巴士站编号为1,S公园巴士站的编号为N。 写一个程序,帮助这名旅客寻找一个最优乘车方案,使他在从饭店乘车到S公园的过程中换乘的次数最少。 输入格式 第一行有两个数字M和N,表示开通了M条单程巴士线路,总共有N个车站。 从第二行到第M+1行依次给出了第1条到第M条巴士线路的信息,其中第i+1行给出的是第i条巴士线路的信息,从左至右按运行顺序依次给出了该线路上的所有站号,相邻两个站号之间用一个空格隔开。 输出格式 共一行,如果无法乘巴士从饭店到达S公园,则输出”NO”,否则输出最少换乘次数,换乘次数为0表示不需换车即可到达。 数据范围 1≤M≤100, 1≤N≤500 输入样例: 3 7 6 7 4 7 3 6 2 1 3 5 输出样例: 2 思路: 我们可以设所有可达边边权都是1

C++ 字符流 stringstream

折月煮酒 提交于 2020-03-30 12:31:32
(转自: https://blog.csdn.net/nwpu_yike/article/details/22100615 ) 一、类型转换——数字->字符串 C++ stringstream 类是一种十分有用的类,特别是当我们需要在程序中使用字符串和数字数据互相转换的时候。要想在程序中使用 stringstream 类,我们需要在源程序文件中包含头文件include<sstream>。stringstream 对象的使用方法与cout对象的使用方法基本相同。 当我们需要按预定的格式将程序中的数据保存在一个string 中的时候,可以先创建一个stringstream 对象,并通过运算符 ”<<“ 将数据传递给 stringstream 对象。(这与通过”<<“ 使用cout 对象的方法相同。)接着,我们可以通过调用stringstream 类的函数str() 将对象所包含的内容赋给一个string对象。在下面的程序中,我们先将数据传递给一个stringstream 对象,然后通过该 stringstream 对象将数值赋给一个string 对象。注:cout能使用的所有ios格式标记也可以在stringstream 对象中使用。 #include <iostream> #include <sstream> using namespace std; int main(void) {

stringstream实现任意类型之间的转换(太流了!)

风格不统一 提交于 2020-03-19 13:23:36
本周的作业里有一些题目要将数字转换为string类的字符串,于是学习了stringstream的用法,发现巨好用!! 于是记录学习一下。 头文件 #include<sstream> 该方法可以实现任意类型之间的转换,比如把要输入的类型定义为in_type,要转换成的类型定义为out_type,于是有: out_type I_to_O(in_type value) { out_type result; stringstream ss; ss<<value;//流入 ss>>result;//流出 return result; } 举例: 数字转字符串的函数: string num_to_str(int k) { string ans;//最终要的结果为string类 stringstream ss;// 流型 ss ss<<k;//读入数字,向流中传值 ss>>ans;//传出值 return ans; } 当然其他类型转字符串也是可以的 比如当需要将字符转成string类以便后续用+号对字符串进行拼接时: string char_to_str(char k) { string ans; stringstream ss; ss<<k; ss>>ans; return ans; } 就可以将字符转换成string类啦。 太神了! 来源: https://www.cnblogs.com

Is there a way to create a stringstream from a string_view without copying data?

眉间皱痕 提交于 2020-03-15 21:56:54
问题 I think that's a pretty straighforward question. I'd specifically like to use std::get_time , but it requires some sort of a stream to be used with. I am passing the data in a string_view and would like to avoid copying it just to parse the date. 回答1: You can do that easily with Boost.Iostreams library: #include <boost/iostreams/device/array.hpp> #include <boost/iostreams/stream.hpp> #include <iostream> #include <string> int main() { std::string_view buf{"hello\n"}; boost::iostreams::stream

C++中字符串与数值转换(超详细)

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-07 06:49:14
文章目录 一、使用stringstream(简单粗暴) 1.stringstream 2.istringstream和ostringstream 二 使用函数 1 字符串转成数值 3.char数组转换成数值 3.数值转换为字符串 三 总结 下面会介绍两种字符串和数值相互转换方法:stringstream和函数 一、使用stringstream(简单粗暴) C++中有ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream头文件 下面是这几个类的继承关系图: 1.stringstream # include <iostream> # include <sstream> using namespace std ; int main ( ) { int i = 1 ; float f = 1.2 ; double d = 1.23 ; //number => string stringstream ss1 ; ss1 << i << " " << f << " " << d << endl ; string result = ss1 . str ( ) ; cout << "result = " << result ; // result = 1 1.2 1.23 //string=》number string

如何清除stringstream变量?

馋奶兔 提交于 2020-02-28 11:06:42
我已经尝试了几件事, std::stringstream m; m.empty(); m.clear(); 两者都不起作用。 #1楼 这些不会在gnu c ++中丢弃stringstream中的数据 m.str(""); m.str() = ""; m.str(std::string()); 以下确实为我清空了字符串流: m.str().clear(); #2楼 无论使用哪种编译器,这都应该是最可靠的方法: m=std::stringstream(); #3楼 我的2美分: 这似乎在xcode和dev-c ++中对我有用,我有一个菜单形式的程序,如果按照用户的要求迭代执行,它将填充一个stringstream变量,该变量在第一次执行该代码时就可以正常工作运行,但不会在用户下次运行相同的代码时清除字符串流。 但是下面的两行代码最终每次都会在填充字符串变量之前清除stringstream变量。 (2小时的反复试验和Google搜索),顺便说一句,单独使用每一行都无法解决问题。 //clear the stringstream variable sstm.str(""); sstm.clear(); //fill up the streamstream variable sstm << "crap" << "morecrap"; #4楼 m.str(""); 似乎有效。 #5楼

71. 简化路径

人走茶凉 提交于 2020-02-25 00:44:19
文章目录 leetcode71:[71. 简化路径](https://leetcode-cn.com/problems/simplify-path/) 题目描述 solution idea 利用stringstream和getline分割字符串 c++ 语法 getline Parameters 参考文献 leetcode71: 71. 简化路径 题目描述 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅: Linux / Unix 中的绝对路径 vs 相对路径 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。 Example 输入: "/home//foo/" 输出: "/home/foo" solution idea 利用stringstream和getline分割字符串 class Solution { public: string simplifyPath(string path) { stringstream is(path);