2013-10-05 516 views
4

我試圖與2個分隔符來分割字符串‘+’和‘ - ’在C++ 使用字符串找到一個分隔符...拆分在C++字符串使用2個分隔符「+」和「 - 」

誰能給我出去轉轉......

使用

str.find(分隔符)

例如:

A + B-C + d

輸出所需: 一個 b Ç d

預先感謝

+0

http://stackoverflow.com/questions/ 236129/how-to-split-a-string-in -c?rq = 1 – chris

回答

14

使用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("+-")); 
+0

無法使用boost庫... –

+1

@ rolling.stones答案的第一部分是變量* without * boost。忽略你案例中的第二部分。 – Appleshell

+0

我仍然無法使用矢量/得到你已經提到的代碼的分割輸出:( –

0

你可以爲變量的分隔符做到這一點,以及

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; 
      } 
     } 
    } 
} 
相關問題