0
次のコードは、区切り文字で区切り文字を関数を使用して分割することになっています。私はそれが文字列delimiter
で区切られtarget
内のサブストリングのベクトルを返すように機能を実装する必要が文字列を区切り文字でベクトルに分割する必要があります
vector<string> split(string target, string delimiter);
:
は、次の関数宣言を考えます。例えば:
split("10,20,30", ",")
は、文字列 "10"、 "20"、および "30" でvector
を返すべきです。同様に、
split("do re mi fa so la ti do", " ")
は "やる" 文字列でvector
を返す必要があり、 "再"、 "ミ"、 "FA"、 "そう"、 "ラ"、 "TI"、および "やります"。
私のコードは、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;
}
何かがあなたが合理的にインデント場合は明らかだろうこれ、明らかに '' { ''対}の掲載コードのバランスに問題があります。あなたの競合しない 'return'はあなたの' while'ループの中に埋め込まれています。意味:反復は1回だけ行われます。 – WhozCraig
この質問に対する答えは、デバッガを使用することです。 –