我是c +的新手并尝试迈出第一步。在我的问题中,我需要阅读3个整数并用它做一些事情。所以,为了得到这个整数,我写道:
int a, b, n;
scanf("%i%i\n", &a, &b);
scanf("%i", &n);
我也尝试过:
scanf("%i%i", &a, &b);
scanf("%i", &n);
但他总是给我一些n的随机大整数。 输入:
7 13
1
TY
如果我写
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int a, b, n;
cin >> a >> b;
cin >> n;
printf("%i", n);
return 0;
它不起作用。和
一样freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int a, b, n;
scanf("%i%i", &a, &b);
scanf("%i", &n);
printf("%i", n);
return 0;
答案 0 :(得分:2)
这不是在C ++中输入整数的方式。尝试:
std::cin >> a >> b >> c;
但如果你想在第一行有两个,第三个在第二行
一个单独的行,您可能想要逐行阅读(使用
std::getline
):
std::string line;
std::getline( std::cin, line );
std::istringstream l1( line );
l1 >> a >> b >> std::ws;
if ( !l1 || l1.get() != EOF ) {
// The line didn't contain two numbers...
}
std::getline( std::cin, line );
std::istringstream l2( line );
l2 >> n >> std::ws;
if ( !l2 || l1.get() != EOF ) {
// The second line didn't contain one number...
}
这将允许更好的错误检测和恢复 (假设输入格式是面向行的)。
你应该忘记scanf
。这很难使用
正确,而且不是很灵活。
答案 1 :(得分:0)
如果您使用的是C ++,是否有理由不使用流?
std::cin >> a >> b;
std::cin >> n;
要从文件中读取,您将使用std :: ifstream。
std::ifstream file( "filename.txt" );
if( file.is_open() )
{
file >> a >> b >> n;
file.close();
}
cppreference.com是一个很好的参考:ifstream