繁体   English   中英

使用2个分隔符“+”和“ - ”在C ++中拆分字符串

[英]Split a string in C++ using 2 delimiters '+' & '-"

我试图用C ++中的2个分隔符'+'和' - '分割一个字符串,使用字符串查找分隔符...

任何人都可以给我一个...

运用

str.find(分隔符)

例如:

A + B-C + d

需要输出:abcd

提前致谢

使用std::string::substrstd::string::find

    std::vector<std::string> v ; //Use vector to add the words

    std::size_t prev_pos = 0, pos;
    while ((pos = str.find_first_of("+-", prev_pos)) != std::string::npos)
    {
        if (pos > prev_pos)
            v.push_back(str.substr(prev_pos, pos-prev_pos));
        prev_pos= pos+1;
    }
    if (prev_pos< str.length())
        v.push_back(str.substr(prev_pos, std::string::npos));

或者,如果你使用boost那将更容易

#include <boost/algorithm/string.hpp>

std::vector<std::string> v;
boost::split(v, line, boost::is_any_of("+-"));

使用函数“char * strtok(char * src,const char * delimiters)” http://en.cppreference.com/w/cpp/string/byte/strtok

char* s = "a+b-c+d";
char* p = strtok(s, "+-");  
while (p != NULL)
{
  // do something with p
  p = strtok (NULL, "+-");
}

您也可以为变量分隔符执行此操作

void main void()
{
   char stringToUpdate[100] , char delimeters[4];

/*
write code to assign strings and delimeter
*/
        replaceDelimeters(stringToUpdate, delimeters, ' ');
}   

void replaceDelimeters(char* myString, char* delimeters, char repChar)
{   
for (int i = 0; delimeters[i] != '\0'; i++)
    {
        for(int j=0; stringtoUpdate[j] != '\0'; j++)
        {
           if(stringtoUpdate[j] == delimeters[i])
           {
                stringtoUpdate[j] = repChar;
           }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM