gpt4 book ai didi

c++ - 有没有类似于Python中的C++中split()的东西?

转载 作者:行者123 更新时间:2023-11-30 04:48:31 26 4
gpt4 key购买 nike

我是竞争编程的新手,我正在努力解决以下问题:接受一行用空格分隔的整数作为C ++中的输入,并将这些整数存储在向量中。

通过对Stackoverflow上类似问题的回答,我发现那里提供的代码比解决编程问题所需的核心代码占用更多的时间和空间,而这些代码片段对于此类任务而言确实很复杂。因此,我编写了自己的解决方案,并尝试打印实际上似乎无效的向量的存储元素。

#include <iostream>
#include <vector>
using namespace std;

int main(){

vector<int> A;
int tmp;

while((cin >> tmp) && (!EOF)){
A.push_back(tmp);
}

for(int i : A){
cout << i << " ";
}

return 0;
}


我编译时没有任何错误,似乎可以正常工作。但是,一旦我完成了使用空格分隔的整数序列并按ENTER键,程序就会突然终止执行而不会打印结果。请提出我应该在代码中进行的任何更正。如果您可以提供一些有关C ++是否与Python中的split()类似的信息,将很有帮助。一个简单的代码片段被赞赏。

最佳答案

您可以使用std::istream_iterator读取由空格分隔到某个容器中的整数(或您定义/定义了operator>>的任何其他整数):

std::vector<int> v;
std::copy(std::istream_iterator<int>{std::cin}, std::istream_iterator{}, std::back_inserter(v));


如果您只想读取一行,则首先使用 std::getline获取该行,将填充的 std::string包装在 std::istringstream中,然后在该流上使用上述内容(而不是 std::cin

关于c++ - 有没有类似于Python中的C++中split()的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55773443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com