我試圖與2個分隔符來分割字符串‘+’和‘ - ’在C++ 使用字符串找到一個分隔符...拆分在C++字符串使用2個分隔符「+」和「 - 」
誰能給我出去轉轉......
使用
str.find(分隔符)
例如:
A + B-C + d
輸出所需: 一個 b Ç d
預先感謝
我試圖與2個分隔符來分割字符串‘+’和‘ - ’在C++ 使用字符串找到一個分隔符...拆分在C++字符串使用2個分隔符「+」和「 - 」
誰能給我出去轉轉......
使用
str.find(分隔符)
例如:
A + B-C + d
輸出所需: 一個 b Ç d
預先感謝
使用std::string::substr
和std::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("+-"));
無法使用boost庫... –
@ rolling.stones答案的第一部分是變量* without * boost。忽略你案例中的第二部分。 – Appleshell
我仍然無法使用矢量/得到你已經提到的代碼的分割輸出:( –
使用功能「的char *的strtok(字符* SRC,常量字符*分隔符)」 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;
}
}
}
}
http://stackoverflow.com/questions/ 236129/how-to-split-a-string-in -c?rq = 1 – chris