我的问题很简单,但我无法解决。
我当然是通过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++;
}
谢谢。
答案 0 :(得分:2)
您只需执行ss >> substr1; ss >> substr2; ss >> substr3;
。 >>
运算符可完全使用空格作为分隔符。
答案 1 :(得分:0)
在“ while”中,当到达空格时,使其成为空格之前的子字符串,并且“ tom and jerry”具有2个空格,因此将其拆分为两个单词。 ss >> buf表示将“ ss”的字符串输入到buf。因此,如果有spce,它可以在空格之前存储单词。