获取字符 '=' 之前的所有 std::string 或第一个单词
Posted
技术标签:
【中文标题】获取字符 \'=\' 之前的所有 std::string 或第一个单词【英文标题】:get all the std::string's or first word's before character '='获取字符 '=' 之前的所有 std::string 或第一个单词 【发布时间】:2015-11-24 16:58:03 【问题描述】:我想检索'='之前的所有值/单词
Ex:
A = my first variable, I wanted to get all the strings;
var2 = I wanted to get this variable also;
var3 = jcdksjfckjdsckjdscjkdsbckjdsncjsjd;
现在我想从上面的文本(c++ std::string)中检索所有变量(A, var2, var3)
。
更新:一种可能的方法是
vector<string> myClass::getVariablesFromDescription(string f_description)
vector<string> l_variables;
stringstream l_desc;
l_desc << f_description;
string l_temp;
string l_prvStr = string();
for(int i=0; l_desc >> l_temp ; i++ )
if(l_temp == string("="))
l_variables.push_back(l_prvStr);
l_prvStr = l_temp;
return l_variables;
【问题讨论】:
可以做C风格的字符串解析(char by char),但是看看是否有一些现成的函数或可用于std::string的方法。 看看std::string
's interface,有一些成员函数可以让它比你自己编写解析代码更干净一些。 (具体来说,find
和 substr
应该会派上用场)
我以前只看过它们,我们可以用 find 获得 '=' 的索引,但是我怎样才能在 to = 之前找到单词?任何提示
我认为有些人他们只是投票而没有阅读和理解,可以看到我的答案。
【参考方案1】:
您可以创建一个新字符串,开始逐字节复制原始字符串,并在检测到“=”时停止。
string example = "var69 = asdfghjkl";
string var_name;
for(int i=0; i<example.size(); i++)
if(example[i] == '=') break;
var_name += example[i];
【讨论】:
【参考方案2】:我还不能发表评论,但你要求提示。
find 返回 = 符号所在的位置。您也知道您从 0 开始。然后您可以将字符串从 0 获取到 position 并复制出来。
【讨论】:
其他变量呢,它的连续文本&没有分隔符。 我不确定你的意思,在我回答的问题中,他只是想要从位置 0 到第一个 = 符号的所有数据。我就是这样给他的。查找默认位置 0 而无需指定它。我在家里编写了代码,它按预期工作,我只是不记得通过电子邮件将其发送给自己。话又说回来,他想要一个暗示,所以做这一切也不是什么暗示。正如我所说,我无法发表评论,因此给出提示的唯一方法就是这样。以上是关于获取字符 '=' 之前的所有 std::string 或第一个单词的主要内容,如果未能解决你的问题,请参考以下文章
获取字符 '=' 之前的所有 std::string 或第一个单词