此处将为大家介绍关于【c++】istream转为string的详细内容,并且为您解答有关c++怎么把string转成int的相关问题,此外,我们还将为您介绍关于c–getline的实现(istream
此处将为大家介绍关于【c++】istream 转为 string的详细内容,并且为您解答有关c++怎么把string转成int的相关问题,此外,我们还将为您介绍关于c – getline的实现(istream&is,string&str)、c – 如何将istringstream和ifstream分配给istream变量?、c – 有没有办法std ::将std :: string转换成std :: stringstream、c – 这一行发生了什么:istringstream是(line);的有用信息。
本文目录一览:- 【c++】istream 转为 string(c++怎么把string转成int)
- c – getline的实现(istream&is,string&str)
- c – 如何将istringstream和ifstream分配给istream变量?
- c – 有没有办法std ::将std :: string转换成std :: stringstream
- c – 这一行发生了什么:istringstream是(line);
【c++】istream 转为 string(c++怎么把string转成int)
一直局限于使用cout、cin,在平时的开发中已经足够了。突然遇到istream,还真不知所措,在使用boost中,各种stream流被虐,今天一个需求就是把istream转为string,如下:
std::shared_ptr<boost::asio::streambuf> read_buffer(new boost::asio::streambuf);
......//字符串
std::istream stream(read_buffer.get());
std::istreambuf_iterator<char> eos;
std::string str(std::istreambuf_iterator<char>(stream), eos);
参考文章:http://stackoverflow.com/questions/3203452/how-to-read-entire-stream-into-a-stdstring
c – getline的实现(istream&is,string&str)
你如何解决像getline(char * s,streamsize n)这样固定大小的char数组的问题?
他们使用临时缓冲区和许多调用新char [length]或其他整洁的结构?
解决方法
可能的实施:
istream& getline(istream& stream,string& str) { char ch; str.clear(); while (stream.get(ch) && ch != '\n') str.push_back(ch); return stream; }
c – 如何将istringstream和ifstream分配给istream变量?
std::ifstream file(this->_path)
和
std::istringstream iss(stringSomething);
至
std::istream is
我试过将它们分配给istream变量,就像我从其他从同一基类继承的对象那样,但是没有用.
如何将istringstream和ifstream分配给istream变量?
解决方法
//Note that std::unique_ptr is better that raw pointers std::unique_ptr<std::istream> stream; //stream holds a file stream stream = std::make_unique<std::ifstream>(std::ifstream{ this->_path }); //stream holds a string stream = std::make_unique<std::istringstream>(std::istringstream{});
现在你只需要使用提取内容
std::string s; (*stream) >> s;
c – 有没有办法std ::将std :: string转换成std :: stringstream
解决方法
I do not see a
std::stringstream
constructor accepting rvalue reference ofstd::string
那就对了.即使是str
设置器也没有使用移动语义,所以将字符串移动到stringstream是不可能的(不是在当前的标准,但希望在将来).
c – 这一行发生了什么:istringstream是(line);
https://stackoverflow.com/a/42654357/8408220
(对于“如何读取整数直到行尾?”的问题)
我不明白这条线在做什么:
istringstream is( line );
我知道istringstream是一个类,但是什么是“是”部分?
它是这样做的:
istringstream is = new istringstream(line);
?
解决方法
istringstream is( line );
是一个自动分配的istringstream的定义,命名是用行的内容初始化的.
istringstream is = new istringstream(line);
不会编译. new动态分配和构造一个新对象并返回一个指向它的指针.您只能指定指针指针.你可以
istringstream * is = new istringstream(line);
而make是指向istringstream的指针,但现在你必须处理动态分配的管理.确保你
delete is;
当你不再需要它时.
也就是说,更喜欢自动分配,并在进入动态路线之前给予Why should C++ programmers minimize use of ‘new’?读数.
今天的关于【c++】istream 转为 string和c++怎么把string转成int的分享已经结束,谢谢您的关注,如果想了解更多关于c – getline的实现(istream&is,string&str)、c – 如何将istringstream和ifstream分配给istream变量?、c – 有没有办法std ::将std :: string转换成std :: stringstream、c – 这一行发生了什么:istringstream是(line);的相关知识,请在本站进行查询。
本文标签: