cal*_*pto 6 c++ syntax syntax-checking
我今天写了这个简单的程序,但我发现cin.get()除非有2个程序,否则拒绝工作.有任何想法吗?
#include <iostream>
using namespace std;
int main(){
int base;
while ((base < 2) || (base > 36)){
cout << "Base (2-36):" << endl;
cin >> base;
}
string base_str = "0123456789abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < base; i++){
for (int j = 0; j < base; j++){
for (int k = 0; k < base; k++){
cout << base_str[i] << base_str[j] << base_str[k] << endl;
}
}
}
cin.get();
cin.get();
}
Run Code Online (Sandbox Code Playgroud)
如果我cin.get()在嵌套循环之前移动到一个循环,则循环运行然后暂停.如果我拿出一个cin.get(),程序就结束了.即时通讯使用最新版本的流血c ++开发
你没有初始化'base'变量,但是虽然这会导致bug,但它并不(直接)与你用cin看到的行为相关,即使它有时会根据编译器导致你跳过循环.您可能正在调试模式下构建零初始化或其他东西.
也就是说,假设这是固定的:
当您键入一个值(例如,5)并按Enter键时,流中的数据为5<newline>- operator <<不会从流中提取换行符,但cin.get()会这样做.您的第一个cin.get()从流中提取该换行符,第二个等待时间等待输入,因为该流现在为空.如果你只有一个cin.get()调用,它将立即提取新行并继续,并且由于在cin.get()调用之后没有任何内容,程序终止(应该如此).
您似乎正在使用cin.get()来阻止程序在从调试器运行时关闭; 您通常可以通过IDE中的特定"start without debugging"命令执行此操作; 那么你就不需要滥用cin.get()来达到这个目的.