将分割后的字符串分配为子字符串

时间:2018-12-22 15:00:20

标签: c++ string split

我的问题很简单,但我无法解决。

我当然是通过Internet搜索的,但是发现的所有解决方案都使用std :: vectors,因此我不允许使用它们。

我有以下字符串: std::string str "Tom and Jerry";

我想使用空格作为分隔符来分割此字符串,然后将三个单词分配为三个不同的字符串。

//this is what I am trying to achieve
std::string substr1 = "Tom";
std::string substr1 = "and";
std::string substr1 = "Jerry";

这是我用空格分隔字符串作为定界符的方式:

std::string buf;
std::string background;
std::stringstream ss(str);
while (ss >> buf) {
    if (buf == " ")
        background = buf; // don't really understand that part

std::cout << "splitted strings: " << buf << std::endl;
}

但是我不知道何时以及如何将分割后的字符串分配给substr1,substr2,substr3。谁能解释我应该如何将字符串分配部分放入其中?

我尝试了一些奇怪的东西,例如:

std::string substr1, substr2, substr3;
int counter = 1;
while (ss >> buf) {
    if (buf == " ")
        background = buf; // don't really understand that part

    counter = 1;
    if (counter == 1) {
        substr1 = buf;
        std::cout << "substr1 (Tom): " << substr1 << std::endl;
        counter++;
        }
    else if (counter == 2) {
        substr2 = buf;
        std::cout << "substr2 (and): " << substr2 << std::endl;
        counter++;
        }
    else if (counter == 3) {
        substr3 = buf;
        std::cout << "substr3 (Jerry): " << substr3 << std::endl;
        counter++;
    }

谢谢。

2 个答案:

答案 0 :(得分:2)

您只需执行ss >> substr1; ss >> substr2; ss >> substr3;>>运算符可完全使用空格作为分隔符。

Code

答案 1 :(得分:0)

在“ while”中,当到达空格时,使其成为空格之前的子字符串,并且“ tom and jerry”具有2个空格,因此将其拆分为两个单词。 ss >> buf表示将“ ss”的字符串输入到buf。因此,如果有spce,它可以在空格之前存储单词。