2011-05-09 26 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; 
}