C++ 字符串拆分

C++ 字符串拆分,c++,C++,如何将字符串分为两个,第一个在“,”或“,”或“”等之前,第二个在其后,然后将这两个变量都赋给两个不同的变量。 例如 string s=“154558,ABCDEF;(这将由用户输入)string a=154558;//在转换string b=ABCDEF后,应该像这样拆分string b=ABCDEF在上拆分字符串的两种主要方法是(1)从字符串中创建一个分隔符,然后与分隔符“”、“一起使用以分隔两个字符串,例如 #include <iostream> #include <st

如何将字符串分为两个,第一个在“,”或“,”或“”等之前,第二个在其后,然后将这两个变量都赋给两个不同的变量。 例如

string s=“154558,ABCDEF;(这将由用户输入)string a=154558;//在转换string b=ABCDEF后,应该像这样拆分string b=ABCDEF

上拆分字符串的两种主要方法是(1)从字符串中创建一个分隔符,然后与分隔符“
”、“
一起使用以分隔两个字符串,例如

#include <iostream>
#include <string>
#include <sstream>

int main (void) {
    
    std::string s {"154558,ABCDEF"};
    std::stringstream ss(s);
    std::string sub {};
    
    while (getline (ss, sub, ','))
        std::cout << sub << '\n';
}
或者,第二种同样简单的方法是使用并找到字符串中
,“
的位置,然后使用位置with提取逗号两侧的子字符串,例如

#include <iostream>
#include <string>

int main (void) {
    
    std::string s {"154558,ABCDEF"};
    size_t pos = s.find_first_of (",");
    
    if (pos != std::string::npos) {
        std::cout << "first: " << s.substr(0, pos) << 
                    "\nsecond: " << s.substr(pos+1) << '\n';
    }
}

任何一种方法都可以。请仔细查看,如果您还有其他问题,请告诉我。

在“
上拆分字符串的两种主要方法是:(1)从字符串创建一个分隔符,然后使用分隔符“
”,“
分隔两个字符串,例如

#include <iostream>
#include <string>
#include <sstream>

int main (void) {
    
    std::string s {"154558,ABCDEF"};
    std::stringstream ss(s);
    std::string sub {};
    
    while (getline (ss, sub, ','))
        std::cout << sub << '\n';
}
或者,第二种同样简单的方法是使用并找到字符串中
,“
的位置,然后使用位置with提取逗号两侧的子字符串,例如

#include <iostream>
#include <string>

int main (void) {
    
    std::string s {"154558,ABCDEF"};
    size_t pos = s.find_first_of (",");
    
    if (pos != std::string::npos) {
        std::cout << "first: " << s.substr(0, pos) << 
                    "\nsecond: " << s.substr(pos+1) << '\n';
    }
}

任何一种方法都可以。请仔细查看,如果您还有其他问题,请告诉我。

我相信它可以像使用rfind+substr一样简单

size_t pos = str.rfind('.') 
new_str = str.substr(0, pos);


基本上,代码所做的是搜索第一个“.”,然后使用substr来提取子字符串。

我相信它可以像使用rfind+substr一样简单

size_t pos = str.rfind('.') 
new_str = str.substr(0, pos);


基本上,代码所做的是搜索第一个“.”,然后使用substr提取子字符串。

研究的乐趣您需要找到分隔符的索引,您可以使用find函数,然后使用substr函数拆分字符串。有关定位
,“
”的方法,请参阅。
,a然后您可以使用
substr
,等等…或者创建一个stringstream,如上所述,您可以尝试使用这个strtok()。研究的乐趣您需要找到分隔符的索引,您可以使用find函数,然后使用substr函数拆分字符串。有关定位
'
,然后您可以使用
substr
,等等…或创建一个字符串流的方法,请参阅。如上所述,您可以尝试使用这个strtok()是的,这也是一个很好的方法。你可以使用
find
find_first\u of
find_first\u not_of
rfind
,等等的任意组合。你可以使用
新的str\u b=str.substr(pos+1)来分步通过一个带任何分隔符的字符串
也提取第二个子字符串。是的,这也是一种很好的方法。基本上,您可以使用
find
find\u first\u of
find\u first\u of
rfind
等的任意组合来单步遍历字符串以分隔它。您可以使用
new\u str\u b=str.substr(pos+1);
也提取第二个子字符串。