我想编写程序,它将两个数字m和n作为输入,并给出m数的第n位数。示例m = 1358 n = 2输出:5
git rev-parse
但我收到了一个错误:' m_new'在这方面没有申明。为什么我会收到此错误以及如何解决此问题?
答案 0 :(得分:4)
m_new
变量是嵌套while
循环的本地变量,不能在其范围之外使用。大括号{}
表示的范围决定了可见性:
int main() {
// can't be used here
while (true) {
// can't be used here
while (true) {
string m_new = to_string(m);
// can only be used here
}
// can't be used here
while (check != 'y'&& check != 'n') {
// can't be used here
}
// can't be used here
}
// can't be used here
}
重新考虑设计只使用一个while
循环:
int main(){
char check = 'y';
while (std::cin && choice == 'y') {
int m = 0, n = 10;
std::cout << "Enter please number m and which digit you want to select";
std::cin >> m >> n;
string m_new = to_string(m);
// the rest of your code
std::cout << "Please enter y or n\n";
std::cin >> check;
}
}
现在,m_new
循环中的所有内容都可以看到while
变量。
答案 1 :(得分:3)
m_new
。在{...}
块内声明的任何内容都只存在于该块内。最后使用它:
cout << "The position" << n << "Of integer" << m << "is:" << m_new.substr(n,1);
在块之外,因此变量不再存在。
答案 2 :(得分:0)
变量“m_new”刚好在“while(true)”范围内,当你要求这个变量退出循环时,它会抛出一个编译时错误。
while(true){
...
string m_new = to_string(m);
...
}
...
cout << "The position" << n << "Of integer" << m << "is:" << m_new.substr(n,1);
^
...