2016-01-24 166 views
-4

我想从字符串中逐个获取单词(如:“我的名字是Jonathan”),并将每个单词保存到列表中的一个单元上。我想这样做extremelly简单,不需要任何载体等 例如将一个字从字符串保存到列表中

我从一个字符串,一个字,并将其保存到一个元素 同样 直到字符串的结尾。

+1

很难做到“在列表上”和“没有任何矢量等”,因为列表通常有资格作为“矢量等”。你可以再详细一点吗? – molbdnilo

+1

使用例如['std :: vector'](http://en.cppreference.com/w/cpp/container/vector)(或其他标准[容器](http://en.cppreference.com/w/cpp/container) ))*是简单的方法。使用标准容器,['std :: string'](http://en.cppreference.com/w/cpp/string/basic_string),[streams](http://en.cppreference.com/w/cpp/ io)和[算法](http://en.cppreference.com/w/cpp/algorithm)和[迭代器辅助函数](http://en.cppreference.com/w/cpp/iterator)它可以完成只有四行C++代码,其中三行是变量声明。 –

回答

3

为此,您可以通过以下方式

#include <string> 
#include <list> 
#include <sstream> 
#include <iterator> 

//... 

std::istringstream is("My name is Jonathan"); 

std::list<std::string> lst((std::istream_iterator<std::string>(is)), 
          std::istream_iterator<std::string>()); 

这里是一个示范项目

#include <iostream> 
#include <string> 
#include <list> 
#include <sstream> 
#include <iterator> 

int main() 
{  
    std::istringstream is("My name is Jonathan"); 

    std::list<std::string> lst((std::istream_iterator<std::string>(is)), 
           std::istream_iterator<std::string>()); 

    for (const std::string &s : lst) std::cout << s << ' '; 
    std::cout << std::endl; 

    return 0; 
}    

它的输出是

My name is Jonathan 

如果要将此任务应用到自己的列表,那么你可以使用以下方法

std::istringstream is("My name is Jonathan"); 
std::string word; 

while (is >> word) 
{ 
    // append your list with the word 
} 
+0

如果您想要通过char提取char,您还需要查看['std :: istreambuf_iterator'](http://en.cppreference.com/w/cpp/iterator/istreambuf_iterator)。 –

相关问题