类型转换问题:字符数组的元素转换为整数变量
trouble with type casting: element of char array to an integer variable
这是我尝试在一本我试图学习编程的书中做一个问题的尝试。该问题希望您将英尺和英寸的高度转换为英寸,只需使用 1 cin 命令,而不是单独请求英尺和英寸。
cout << "Enter height in following format F'I":";
cin >> height;
feet = (int)height[0];
inches = (int)height[2];
cout << "feet/height[0]: " << feet << "/" << height[0] << "t" << "inches/height[2]: " << inches << "/" << height[2] << endl; //to test what went wrong, didn't help me much
cout << "You are " << feet * 12 + inches << " inches tall";
对于 6'8" 的输入,输出如下
Enter height in following format F'I":6'8"
feet/height[0]: 54/6 inches/height[2]: 56/8
You are 704 inches tall
在我的第一个版本中,我没有脚=高度[0]和英寸=高度[2],没有石膏。根据我对编程和C++的有限理解,它似乎获得了 6 和 8 的 ascii 数字,所以我使用 int 强制转换来尝试修复它,但它返回了相同的结果。
用户输入的数字必须从 ascii 转换为数字表示。 这不是类型转换问题,而是转换错误。您可以使用 atoi() 解析字符串并将其解释为整数。 但是您需要这样做,以便检测到字符 ' 和 "。
正如@bobestm回答的那样,这不是一个铸造问题。您需要将 C 字符串转换为整数。他建议使用 atoi(),但我在使用 C++ 时更喜欢 istringstream:
char some_string[100];
cout << "Enter your number: " << endl;
cin >> some_string;
istringstream iss;
iss.str(string(some_string));
int num;
iss >> num;
if (iss.fail())
{
cout << some_string << " is not a number! " << endl;
}
但是,cin
允许格式化输入,因此您可以只让用户输入整数而无需进行任何转换:
int some_int;
cout << "Enter your number: " << endl;
cin >> some_int;
此外,看起来您正在尝试将整数放入单个 ASCII 字符中。您可能想阅读更多有关 C 字符串的信息。虽然 std::string 在 C++ 中更容易使用,但它仍然可以帮助您了解 C 字符串的工作原理。
这应该可以满足您的需求:
string str;
cout << "Enter height in following format F'I":"
getline(cin, str);
size_t index = str.find("'");
string feet_str = str.substr(0, index);
string inches_str = str.substr(index + 1);
int feet, inches;
istringstream iss;
iss.str(feet_str);
iss >> feet;
iss.clear();
iss.str(inches_str);
iss >> inches;
相关文章:
- 努力将整数转换为链表。不知道我在这里做错了什么
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 如何在C++中将整数转换为其数字数组
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何使用C++将字符串中的字符转换为整数变量
- 如何将整数字符串转换为整数的二维向量?
- 如果整数与指针大小相同,则重新解释将整数转换为指针双射是否具有双射作用?
- 使用 "stringstream " 将字符串转换为整数
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 如何检测 std::vector::emplace_back 上的隐式转换损失整数精度
- 如何防止双精度值到整数的隐式转换
- 为什么此指针值不能转换为整数的规则是什么?
- 如何解决隐式转换丢失整数精度:'size_t'(又名"无符号长")到'int'警告?
- 在 C++ 中将整数数组转换为位集表示形式的最佳方法?
- 为什么在将 void 指针转换为整数指针时出现分段错误
- 将字符串(可以是十进制字符串或十六进制字符串)转换为整数C++
- 整数类型应该显式转换(例如"int"到"无符号")还是只会增加混乱?
- 如何使用 STL 算法将整数向量转换为字符串向量?
- 无法将"整数 (*)[m]"转换为"整数 (*)[100000]
- 静态强制转换允许转换对象指针,但不允许转换整数