繁体   English   中英

将字符串拆分为两个不同的向量 C++

[英]Splitting a string into two different vectors C++

我正在尝试将字符串拆分为两个不同的向量。 但是,我一生都无法弄清楚我做错了什么。

我有一大堆要传递的字符串(从 a.txt 文件解析),看起来像这样:

01 Sam
02 Pam
03 Lam
04 Ham

我试图将它们传递给两个不同的向量

std::vector<std::string> numbers;
std::vector<std::string> names;

这是我写下的部分代码:

std::stringstream linestream(data.at(i));
while (std::getline(linestream, data.at(i), ' ')) { // Split the string by spaces
    int t = 0;

    if (t == 0) {
        numbers.push_back(data.at(i));
        t++;
    }

    if (t == 1) {
        names.push_back(data.at(i));
    }
}

我希望第一部分(即数字)将被放入 numbers 向量中,而第二部分(即名称)将被放入 names 向量中。 但是,出于某种原因,数字和名称都被放入名称向量中。

有没有更好的方法将两者分开?

用空格分割数据正是operator>>在读取字符串时所做的事情。 不需要额外的getline ,您的循环可以简化为:

std::string numberBuf;
std::string nameBuf;
 
while(linestream >> numberBuf >> nameBuf) {
    numbers.push_back(numberBuf);
    names.push_back(nameBuf);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM