获取字符 '=' 之前的所有 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,有一些成员函数可以让它比你自己编写解析代码更干净一些。 (具体来说,findsubstr 应该会派上用场) 我以前只看过它们,我们可以用 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 或第一个单词

Java Regex - 获取字符串中子字符串之前的所有单词

如何删除Java中特定字符之前的所有字符?

如何将非可变参数值传递给 fmt::format?

将文本文件读入二维向量。 C++