我正在尝试编写一个只读取用户输入中的四个int的函数:ewzge242jfdsiii23所以它应该只保存2422。 这是我的代码,它只是给了我一些奇怪的输出,如果我让它cout数字。 你能否看到我的错误并解释为什么我不能这样做我怎么做以及我能做什么呢?非常感谢!
int readnumber ( ) {
char kar, ont_kar, ont_ont_kar;
int number;
while (kar != '\n' ){
cin.get (kar);
if (kar >= '0' && kar <= '9') {
old_kar=kar;
old_kar = old_kar*10 + (kar - '0');
old_old_kar = old_kar ;
} //if
} //while
if (old_kar < 9999) {
number=old_kar;
}//if
else {
number=old_old_kar;
}//else
}//readnumber
答案 0 :(得分:0)
这看起来太复杂了,为什么你需要这么多变量呢?
old_kar
和old_old_kar
也是错误的。该函数不返回,这应该是主要问题。
这是一个简单的例子:
unsigned readnumber(int number_of_chars) {
char ch;
unsigned number = 0;
while (number_of_chars > 0) {
std::cin.get(ch);
if ('\n' == ch)
break; // Stop on new line
if (ch < '0' or ch > '9')
continue; // Skip non-digits
--number_of_chars; // One digit processed
number = number * 10 + ch - '0'; // And added to the result
}
return number;
}
这是完整版,没有break
或continue
:
#include <iostream> // std::cin, std::cout
#include <fstream> // std::ifstream
using namespace std;
int readnumber(int number_of_chars) {
char ch;
int number = 0;
while (number_of_chars > 0) {
std::cin.get(ch);
if ('\n' == ch)
return number;
if (ch >= '0' and ch <= '9') {
--number_of_chars;
number = number * 10 + ch - '0';
}
}
return number;
}
int main() {
int n = readnumber(4);
cout << "You entered: " << n << endl;
return 0;
}
注意:总是在编译时发出所有警告,这将为您节省大量时间。