2012-11-20 38 views
0

我想這樣的事情一個字符串數組:如何使存儲在向量

#include <iostream> 
#include <vector> 
#include <cstring> 

using namespace std; 

int main() 
{ 

    string inputStr; 
    vector <string> strVector; 
    cin.getline(inputStr,200); 
    int i=0; 
    while (inputStr!=NULL){ //unless all data is read. 
     strVector[i]=getline(inputStr," "); 
     i++; 
    }//while. 

    for (int j=0; j<strVector.size(); j++){ 
     cout<< strVector[j]; 
     cout<<endl; 
    } 
} //main. 

任何一個誰可以提供幫助。我試圖將我的輸入字符串存儲在vector字符串中,然後我可以push_back我的字符串。

+3

和什麼問題? – StevieG

+0

嘗試使用'push_back'方法:'strVector.push_back(getline(inputStr,「」));' – Maroun

+0

Right ...你的語法對於std :: map而不是std :: vector是有效的。使用push_back。 – ScoPi

回答

1

我認爲你正在尋找std::vector模板

3

大部分代碼涉及inputString是無效的push_back方法。還有就是需要std::stringistream沒有函數getline成員,所以這是無效的:

cin.getline(inputStr,200); 

你想有而不是什麼是全局函數getline:

getline(cin, inputStr); 

其次,沒有全局函數getline讀取直接從std::string,所以這是無效的:

strVector[i]=getline(inputStr," "); 

你想用什麼有一個istringstream。如果要劃定上的空白(含標籤),那麼你可以使用operator>>,而不是函數getline

std::getline(std::cin, inputStr); 
std::istringstream iss(inputStr); 
std::string word; 
// read from the istringstream until failure 
while (std::getline(iss,word,' ')) 
    strVector.push_back(word); 

:總而言之,你的代碼可能是這個樣子。

+0

+1和/或圍繞'iss'的'istream_iterator'和'back_inserter'以將字符串插入strVector。 – WhozCraig

+0

@Benjamin Lindley .. 你能解釋一下評論你在istringstream的第二行中試圖做什麼。 – Terrenium

+0

@AzkaAhmad:我會的,但我必須馬上離開。看看[這個](http://en.cppreference.com/w/cpp/io/basic_istringstream)。或者也許別人會解釋。 –

0

這裏是反璞歸真方式:

#include <iostream> 
#include <string> 
#include <vector> 


using namespace std; 



int main(int argc, char *argv[]) 
{ 
    vector<string> strVec; 
    string str; 
    cout<<"Enter # to quit \n\n"; 
    int i=0; 


    while (str!="#") 
    { 
     cout<<"Input text No. "<<i+1 <<" here > "; 
     cin>>str ; 
     strVec.push_back(str); 


     i++; 
    } 

    cout<<"\nStored text\n----------\n"; 
    for (int j=0; j<strVec.size()-1; j++) cout<<j+1<<" "<< strVec[j]<<"\n"; 


    cout<<"\n\n"; 

    return(0); 
}