【发布时间】:2011-10-11 13:26:34
【问题描述】:
我有需要从中提取值的逗号分隔字符串。问题是这些字符串永远不会是固定大小。所以我决定遍历逗号组并阅读中间的内容。为了做到这一点,我创建了一个函数,它返回每个出现在示例字符串中的位置。
这是一个聪明的方法吗?这被认为是坏代码吗?
#include <string>
#include <iostream>
#include <vector>
#include <Windows.h>
using namespace std;
vector<int> findLocation(string sample, char findIt);
int main()
{
string test = "19,,112456.0,a,34656";
char findIt = ',';
vector<int> results = findLocation(test,findIt);
return 0;
}
vector<int> findLocation(string sample, char findIt)
{
vector<int> characterLocations;
for(int i =0; i < sample.size(); i++)
if(sample[i] == findIt)
characterLocations.push_back(sample[i]);
return characterLocations;
}
【问题讨论】:
-
对我来说这是完美的。虽然会有很多 C++ 程序员说“为什么要发明轮子”和“使用那个函数,不要自己写”。不管怎样,我不关心他们,我不了解你。但是,您的代码存在一个小问题。
i不应该达到sample.length(),所以你的 for 循环条件中应该有i < sample.length() -
是的,我刚刚解决了这个问题。此外,它需要是 .size() 而不是长度
-
如果你以后要拆分字符串,你可能想看看this question。
-
@Shahbaz:你刚刚证明了不要“重新发明轮子”的观点。当一个解决方案已经出现多年错误的可用解决方案时,为什么还要冒险将错误引入您的系统。