C++ 在字符串中使用单词迭代器
istream_迭代器对于从istream中获取单词非常有用,如下所示:C++ 在字符串中使用单词迭代器,c++,iterator,C++,Iterator,istream_迭代器对于从istream中获取单词非常有用,如下所示: istrem_iterator<string> my(my_istream); while (my != end) { std::cout << *my << std::endl; ++my; } istrem\u迭代器my(my\u istream); 而(我的!=结束){ std::cout为std::strings提供输入流接口: std::istringstream
istrem_iterator<string> my(my_istream);
while (my != end) {
std::cout << *my << std::endl;
++my;
}
istrem\u迭代器my(my\u istream);
而(我的!=结束){
std::cout为std::string
s提供输入流接口:
std::istringstream my_istream(my_string);
然后,您可以使用std::istream_迭代器
来提取单词,就像以前一样
您可以使用std::copy
编写代码,如下所示:
std::copy(std::istream_iterator<std::string>(my_istream),
std::istream_iterator<std::string>(),
std::ostream_iterator<std::string>(std::cout, "\n"));
std::copy(std::istream\u迭代器(my\u istream),
std::istream_迭代器(),
std::ostream_迭代器(std::cout,“\n”);
为std::string
s提供输入流接口:
std::istringstream my_istream(my_string);
然后,您可以使用std::istream_迭代器
来提取单词,就像以前一样
您可以使用std::copy
编写代码,如下所示:
std::copy(std::istream_iterator<std::string>(my_istream),
std::istream_iterator<std::string>(),
std::ostream_iterator<std::string>(std::cout, "\n"));
std::copy(std::istream\u迭代器(my\u istream),
std::istream_迭代器(),
std::ostream_迭代器(std::cout,“\n”);
谢谢!但我遇到了一个问题。我正在尝试我的\u istream.str(str)第一次填充它。但是第二次我用另一个str尝试它时,它不起作用。我搜索了那个人:但没有找到重置它的方法。你有什么想法吗?@nsvir它以什么方式不起作用?使用str
应该更改底层字符串。@nsvir还注意到那个网站不是“那个人”这是一个非正式的C++参考。我有一段时间(GETLIN(ISRESAM,STR))我用新的str归档了我的I_I流。我想我错过了一些东西,比如清理我的账户_istream@nsvir因此,您正在将行从my_istream
提取到str
中。然后您希望迭代str
中的单词?在这种情况下,您需要一个新的流std::istringstream my_ss(str)
然后您可以对其进行迭代。谢谢!但我遇到了一个问题。我正在尝试我的\u istream.str(str)第一次填充它。但是第二次我用另一个str尝试它时,它不起作用。我搜索了那个人:但没有找到重置它的方法。你有什么想法吗?@nsvir它以什么方式不起作用?使用str
应该更改底层字符串。@nsvir还注意到那个网站不是“那个人”这是一个非正式的C++参考。我有一段时间(GETLIN(ISRESAM,STR))我用新的str归档了我的I_I流。我想我错过了一些东西,比如清理我的账户_istream@nsvir因此,您正在将行从my_istream
提取到str
中。然后您希望迭代str
中的单词?在这种情况下,您需要一个新的流std::istringstream my_ss(str)
然后您可以对其进行迭代。