首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将向量推入另一个向量

将向量推入另一个向量
EN

Stack Overflow用户
提问于 2013-09-09 20:06:59
回答 2查看 264关注 0票数 0

我有一份这样的文件:

代码语言:javascript
复制
98
287 2352
987 4313 3253
235 34325 432 123

基本上我想复制这个文件。我试图一次导入一行,提取数字,并将它们推入向量。每个向量被推入一个更大的向量。

代码语言:javascript
复制
int main(int argc, char* argv[])
{
    int sum = 0, one = 0, two = 1;
    std::string line, number;
    std::vector<int> vec;
    std::vector<std::vector<int>> bigvec;
    auto k = vec.begin();
    std::ifstream in(argv[1]);
    while(in >> line) {
        std::istringstream is(line);
        while(is >> number) {
            vec.push_back(stoi(number));
        }
        bigvec.push_back(vec);
        while(!vec.empty()) {
            vec.pop_back();
        }
        std::cout << std::endl;
    }
    return 0;
}

但是,当我打印结果时,我的代码似乎将每个数字放在自己的向量中,而不是复制文件。

所以我的输出是

代码语言:javascript
复制
98
287
2352
etc.

似乎这条线

代码语言:javascript
复制
while(is >> number) {
    vec.push_back(stoi(number));
}

推送一个数字,然后退出循环。

我哪里出问题了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-09 20:09:54

while(in >> line)从输入中读取下一个单词。如果您想要阅读整个getline(in, line)行,请使用。

可以将多个优化添加到代码中。例如,您可以从输入流中读取一个整数,而不是在已经读取的字符串上使用stoi。另外,您也可以简单地调用clear,而不是一个一个地弹出向量的元素。

票数 4
EN

Stack Overflow用户

发布于 2013-09-09 20:09:12

你的问题在于:

代码语言:javascript
复制
while(in >> line)

C++按defult读取,直到遇到间隔或新行为止。在您的情况下,它会遇到新行之前的间隔。如果你想整行,请:

代码语言:javascript
复制
getline(cin, line);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18706161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档