0
以下代码应该使用函数将字符串与分隔符分开。需要将字符串拆分为具有分隔符的向量
考虑下面的函数声明:
vector<string> split(string target, string delimiter);
我需要实现的功能,使其返回字符串的target
矢量由字符串delimiter
分离。例如:
split("10,20,30", ",")
应该返回与琴弦 “10”, “20”,和 “30” 一个vector
。同样,
split("do re mi fa so la ti do", " ")
应该返回与串的vector
“做”, “重”, “MI”, “FA”, “所以”, “香格里拉”, “钛” 和 “做”。
我的代码只输出vector
的第一个元素。我没有看到函数实现有什么问题。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> split(string, string);
int main()
{
vector<string> v;
string target;
string delim;
split(target, delim);
v = split(target, delim);
for (unsigned long i = 0; i < v.size(); i++)
cout << v[i] << " ";
}
vector<string> split(string target, string delim)
{
cout << "Enter string: "<< endl;
getline(cin, target);
cout << "Enter delimiter:" << endl;
getline(cin, delim);
vector<string> v;
size_t x = target.find(delim);
while (x!= string::npos) {
v.push_back(target.substr(0,x));
target = target.substr(x);
x = target.find(delim);
}
return v;
}
东西显然是不妥的发布代码的平衡''{'VS}',这将是明确的,如果你合理地缩进。你无争议的'return'嵌入*你的'while'循环中。含义:只有一次迭代会发生。 – WhozCraig
这个问题的答案是:使用调试器。 –