【发布时间】:2016-11-29 21:02:34
【问题描述】:
我正在创建一个函数,它应该将input1 拆分为function 字符串(包含input1 的第一个单词)和arguments 字符串(包含input1 的其余部分) .如果我尝试打印function 字符串和arguments 字符串,它们会显示为空。
我该怎么办?
void split (string input1, string function, string arguments){
bool args = false;
string undefined;
for (int i = 0; i < input1.length(); i++){
if (input1[i] == ' '){
if (i == 0) {
input1.erase(0, 1);
} else if (i == (input1.length() - 1)){
input1.erase((input1.length() - 1), 1);
} else {
if (!args) {
for (int o = 0; o < undefined.length(); o++)
function.push_back(undefined[o]);
args = true;
} else if (args) {
for (int u = 0; u < undefined.length(); u++)
arguments.push_back(undefined[u]);
}
}
} else {
if (i == (input1.length() - 1)){
undefined.push_back(input[i]);
if (!args)
for (int u = 0; u < undefined.length(); u++)
function.push_back(undefined[u]);
else
for (int e = 0; e < undefined.length(); e++)
arguments.push_back(undefined[e]);
} else {
undefined.push_back(input[i]);
}
}
}
}
【问题讨论】:
-
请考虑删除 c 标签,因为这个问题似乎是关于 C++ 的。
-
听起来您可能需要学习如何使用调试器来单步调试您的代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。进一步阅读:How to debug small programs
-
为什么我会偷偷怀疑这似乎过于复杂,只是从字符串中提取单词?为什么打电话给
erase? -
你为什么不简单地使用
std::istringstream和operator >>来提取单词? -
@PaulMcKenzie 可能是因为你不知道给学生的任务的确切措辞?