2011-05-09 37 views
0

我有一個函數MakeElementfromString(string k){} 我想分割字符串並使struct element{int nr, string s}與它。 我能做些什麼呢?發現strtok,但無法使用它,也許我不知道如何,因爲是char和一些stringstream方法..沒有爲我工作 任何人都可以告訴我一個想法?我不是C++的專家,所以解釋一下:) 謝謝在C++中分割字符串字符串

+1

如果您使用C++字符串使用substr(),而不是strtok。 – DumbCoder 2011-05-09 12:08:31

+3

如何將字符串轉換爲結構體?你試過什麼了?什麼工作,什麼沒有?這是一個功課問題嗎? – Sriram 2011-05-09 12:09:23

+0

變量「nr」代表什麼? – jonsca 2011-05-09 12:13:23

回答

1

如果你可以使用libs使用boost :: split。

如果你不能遍歷你的字符串,並把部分放在一個向量中。

string s("test hallo! someothertest"); 
char separator = ' '; 
vector<string> parts; 
int token_begin = 0; 
for(int i = 0; i < s.size(); ++i){ 
    if(s[i] == separator){ 
    parts.push_back(s.substr(token_begin, i - token_begin)); 
    token_begin = i + 1; 
    } 
} 

//get last token if does not end with a separator 
if(token_begin != s.size()){ 
    parts.push_back(s.substr(token_begin, s.size() - token_begin)); 
} 
0

在寫這篇文章的時候,這個問題還沒有被編輯來說明OP如何將字符串轉換爲struct元素。但是,這是如何完成的大綱。

假設:字符串s前兩個字符進入int成員的結構,其餘的進入字符串部分。

例如:S = 01hello
僞代碼:

string num = s.substr(0, 2); 
string rest = s.substr(3); 

element e; 
e.setVal(num, rest); 

setVal(string n, string m) { 
    str = m; 
    istringstream buffer(n); 
    buffer >> num; 
} 

其中原結構是:

struct element { 
int nr; 
string str; 
}; 
+0

謝謝大家的提示 – user745087 2011-05-09 12:35:28

+0

@ user745087:如果它解決了您的問題,您應該upvote並標記正確的答案。 – Sriram 2011-05-09 14:11:26

0

謝謝大家幫忙 使其成爲

struct Telem { 
int nrte; 
string s; 
int dims; 
}; 

和我需要從文件中讀取一行和要轉換的行進入我的願望元素希望它可以幫助一些其他人類似的問題

Telem TelemDinString(string k) 
{ 
    Telem a; 
    Init(a); 

    string buf; 
    stringstream ss(k); 
    vector<string> tokens; 
    while (ss >> buf) 
     tokens.push_back(buf); 
    int nr; 

    stringstream convert(tokens[0]); 
    if (!(convert >> nr)) 
     nr=-1; 
    a.nrte = nr; 
    a.s = tokens[1]; 
    a.dims=a.s.length(); 

return a; 
}