【发布时间】:2018-09-19 12:15:17
【问题描述】:
我参加了不同的编码竞赛,因此无法使用 python,因为它的执行时间太慢,但我真的很喜欢 input.split() 的东西,所以我尝试实现自己的拆分。 这是我想出的:
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
vector<string> splt(string s){
vector<string> ans={};
for(int i=0;i<s.size();i++){
string str="";
while(s[i]!=' '){
str+=s[i];
i++;
}
ans.push_back(str);
}
return ans;
}
int main(){
string s;
getline(cin, s);
vector<string> ans=splt(s);
for(auto i:ans)
cout<<i<<", ";
}
但是函数返回的向量经常(但并非总是)最后有一些垃圾。希望能帮助我纠正我的代码,以及将字符串拆分为数组的其他一些实现。
附:对不起,如果我的英语不好,我来自俄罗斯,甚至还没有完成学业:)
【问题讨论】:
-
python 标签在这里做什么?
-
您的计算机上有一个名为“调试器”的工具。使用此工具,您可以一次运行程序并检查所有变量的值。这个调试器会告诉你函数返回垃圾的确切原因。原因很明显,但您问题的真正答案是:学习如何使用调试器。这就是它的用途。了解如何使用调试器是每个 C++ 开发人员必备的技能,没有例外。
-
您的内部循环 while(s[i]!=' ') ... 不检查字符串的结尾。试试 while(s[i]!=' '&&i
-
除非您的输入字符串以空格结尾,否则这是行不通的,这不太可能。
-
每个问题一个问题,请。您的第二个问题与stackoverflow.com/q/236129/3002139 重复。请考虑将其删除。
标签: c++ string function vector