C++ 将ascii substr转换为int
大学一年级学生在将ascii转换为int时遇到问题 问题在于这段代码 无符号短整数=((分钟[3]-48)*10)+(分钟[4]-48) 当我在家里对代码块运行它时,它返回一个不正确的值,当我再次运行它时,我得到一个不同的不正确的值 当我在大学的Borlands上运行它时,屏幕在我阅读之前就上升并消失了,所以我也不能在这里使用系统时钟 现在是复活节假期,所以即使我在上大学,我也不能打扰我的导师,因为他们不是C++ 将ascii substr转换为int,c++,C++,大学一年级学生在将ascii转换为int时遇到问题 问题在于这段代码 无符号短整数=((分钟[3]-48)*10)+(分钟[4]-48) 当我在家里对代码块运行它时,它返回一个不正确的值,当我再次运行它时,我得到一个不同的不正确的值 当我在大学的Borlands上运行它时,屏幕在我阅读之前就上升并消失了,所以我也不能在这里使用系统时钟 现在是复活节假期,所以即使我在上大学,我也不能打扰我的导师,因为他们不是 #include <iostream.h> #include <con
#include <iostream.h>
#include <conio.h>
#include <string>
//#include <time.h>
//#include <ctype.h>
using namespace std;
int main() {
bool q = false;
do {
// convert hours to minutes ... then total all the minutes
// multiply total minutes by $25.00/hr
// format (hh:mm:ss)
string theTime;
cout << "\t\tPlease enter time " << endl;
cout <<"\t\t";
cin >> theTime;
cout << "\t\t"<< theTime << "\n\n";
string hours = theTime.substr (0, 2);
cout <<"\t\t"<< hours << endl;
unsigned short ihours = (((hours[0]-48)*10 + (hours[1] -48))*60);
cout << "\t\t"<< ihours << endl;
string minutes = theTime.substr (3, 2);
cout <<"\t\t"<< minutes << endl;
unsigned short iminutes = ((minutes[3]-48)*10) + (minutes[4]-48);
cout << "\t\t" << iminutes << endl;
cout << "\n\n\t\tTotal Minutes " <<(ihours + iminutes);
cout << "\n\n\t\tTotal Value " <<(ihours + iminutes)*(25.00/60) << "\n\n";
}
while (!q);
cout << "\t\tPress any key to continue ...";
getch();
return 0;
}
#包括
#包括
#包括
//#包括
//#包括
使用名称空间std;
int main(){
boolq=false;
做{
//将小时转换为分钟…然后合计所有分钟
//将总分钟数乘以$25.00/小时
//格式(hh:mm:ss)
把时间串起来;
问题是,即使您从原始字符串中获得位置3和4处的字符,新字符串也只有两个字符(即只有索引0和1)。问题是,即使您从原始字符串中获得位置3和4处的字符,新字符串也只有两个字符(即,只有索引0和1)。您将分钟设置为时间的子字符串。因此分钟有2个字符。第一个字符在分钟内从位置0开始
那么这个
unsigned short iminutes = ((minutes[3]-48)*10) + (minutes[4]-48);
错误,因为它在分钟内访问不存在的字符3和4,因为分钟只有两个字符长。它只有位置0和1的字符
应该是这个吗
unsigned short iminutes = ((minutes[0]-48)*10) + (minutes[1]-48);
或者你可以用这个:
unsigned short iminutes = ((theTime[3]-48)*10) + (theTime[4]-48);
您将分钟设置为时间的子字符串。因此分钟有2个字符。第一个字符在分钟内从位置0开始
那么这个
unsigned short iminutes = ((minutes[3]-48)*10) + (minutes[4]-48);
错误,因为它在分钟内访问不存在的字符3和4,因为分钟只有两个字符长。它只有位置0和1的字符
应该是这个吗
unsigned short iminutes = ((minutes[0]-48)*10) + (minutes[1]-48);
或者你可以用这个:
unsigned short iminutes = ((theTime[3]-48)*10) + (theTime[4]-48);
另一个问题是他在减去48
,而不是'0'
(并且他没有验证他是否有数字开始)。另一个问题是他在减去48
,而不是'0'
(并且他没有验证他是否有数字开始。)