2016-01-24 165 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)。 –

相關問題