C++ 在字符串中使用单词迭代器

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

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::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)
然后您可以对其进行迭代。