作为输入的一部分,用户输入nrt:x告诉程序计算x的第n个根。如果我想将n和x发送到另一个方法以简化第n个根,我想我可以使用std :: string :: find来查找“rt:”。如果find返回true,那么我需要将n和x发送到另一个方法,但是在找到“rt:”后我怎么能这样做呢?例如,用户输入7rt:3。对于“rt:”,查找将返回true,那么我怎么能将3和7发送到另一个方法?
if(std::string::find(rt:)) {
//manipulate numbers before/after rt: from user input
if(result will be an int) {
nthRoot(double n, double x);
}
If(result will not be an int) {
nthRootSimplify(double n, double x);
}
}
void nthRoot(double x, double n){
double nthRootSol = pow(x, double(1 / n));
}
编辑:代码我已经在你的帮助下写成了解决方案。任何建议都会很棒。如果“n”或“z”长于1 int,我发现自己会遇到问题。
void findNthRoot(string x) {
if(x.find("rt:") != string::npos) {
unsigned position = x.find("rt:");
cout << position << endl;
double n = position - 1;
cout << n << endl;
double z = position + 3;
cout << z << endl;
string str1 = x.substr(n, 1);
string str2 = x.substr(z);
cout << str1 << endl;
cout << str2 << endl;
}
}
int main() {
findNthRoot("2 - 1+3rt:4");
return 0;
}
输出是: 7 6 10 3 4 最重要的是“3”和“4”是str1和str2的值
答案 0 :(得分:1)
如果您假设输入始终以n开头并以激进下的数字结尾,则可以使用std::string::front()
访问第一个元素,使用std::string::back()
访问最后一个元素。
答案 1 :(得分:1)
find
不会返回true
。这样的find
将是非常无用的。真实std::string::find
返回找到的字符串的位置。
知道这个位置,你现在可以将你的字符串分成&#34;之前&#34; &#34;&#34;&#34;&#34;部分使用std::string::substr
。