无法标记字符串并将其传递给 C++ 中的结构
can't tokenize a string and pass it to struct in c++
我必须编写一个程序,其中我必须将时间 (hh:mm:ss) 作为字符串输入并使用 : 作为分隔符对其进行标记化,并将小时、分钟和秒传递给结构时间,然后显示总秒数。我已经编写了代码,但它给了我无法理解的错误。这是代码:
#include<iostream>
#include<string>
using namespace std;
struct time{
int hours;
int minutes;
int seconds;
void Print_in_Seconds(){
cout<<"Total Second: "<<hours*3600+minutes*60+seconds;
}
};
time Tokenized_time(string str)
{
time time_;
// Get hours
int hour1 = (int)str[1] - '0';
int hour2 = (int)str[0] - '0';
int hour = (hour2 * 10 + hour1 % 10);
int count=0;
int minute=0,second=0;
for (int i=3; i <= 7; i++){
if(i==3 || i==4){
minute=minute*10+((int)(str[i]-'0'));
}
else if(i==6 || i==7){
second=second*10+((int)(str[i]-'0'));
}
}
time_.hours=hour;
time_.minutes=minute;
time_.seconds=second;
return time_;
}
// Driver code
int main()
{
time time1;
cout<<"Enter Time- 00:00:00 Formate: ";
string str;
cin>>str;
time time1=Tokenized_time(str);
time1.print();
return 0;
}
这是我遇到的错误
有什么帮助吗?
time
恰好是标准 C 库中的函数名称(并并入 C++ 库),并且通过将 struct
命名为相同的名称,您会产生歧义,而根据C++的语法规则,编译器必须考虑time
到函数名,这里,导致编译错误。
最简单的解决方案是为您的 struct
选择一个不同的名称。您还可以指示编译器将 time
显式解析为类型:
struct time Tokenized_time(string str)
而且只要您正在这样做,您还可以 get rid of using namespace std
以消除更多类似的头痛、困惑和不受欢迎的惊喜的机会。
编辑:这很可能是 libstc++
中的错误,但除了坐下来等待 gcc 修复此错误之外,您无能为力。但是您可能可以像这样更快地解决它...
我必须编写一个程序,其中我必须将时间 (hh:mm:ss) 作为字符串输入并使用 : 作为分隔符对其进行标记化,并将小时、分钟和秒传递给结构时间,然后显示总秒数。我已经编写了代码,但它给了我无法理解的错误。这是代码:
#include<iostream>
#include<string>
using namespace std;
struct time{
int hours;
int minutes;
int seconds;
void Print_in_Seconds(){
cout<<"Total Second: "<<hours*3600+minutes*60+seconds;
}
};
time Tokenized_time(string str)
{
time time_;
// Get hours
int hour1 = (int)str[1] - '0';
int hour2 = (int)str[0] - '0';
int hour = (hour2 * 10 + hour1 % 10);
int count=0;
int minute=0,second=0;
for (int i=3; i <= 7; i++){
if(i==3 || i==4){
minute=minute*10+((int)(str[i]-'0'));
}
else if(i==6 || i==7){
second=second*10+((int)(str[i]-'0'));
}
}
time_.hours=hour;
time_.minutes=minute;
time_.seconds=second;
return time_;
}
// Driver code
int main()
{
time time1;
cout<<"Enter Time- 00:00:00 Formate: ";
string str;
cin>>str;
time time1=Tokenized_time(str);
time1.print();
return 0;
}
这是我遇到的错误
有什么帮助吗?
time
恰好是标准 C 库中的函数名称(并并入 C++ 库),并且通过将 struct
命名为相同的名称,您会产生歧义,而根据C++的语法规则,编译器必须考虑time
到函数名,这里,导致编译错误。
最简单的解决方案是为您的 struct
选择一个不同的名称。您还可以指示编译器将 time
显式解析为类型:
struct time Tokenized_time(string str)
而且只要您正在这样做,您还可以 get rid of using namespace std
以消除更多类似的头痛、困惑和不受欢迎的惊喜的机会。
编辑:这很可能是 libstc++
中的错误,但除了坐下来等待 gcc 修复此错误之外,您无能为力。但是您可能可以像这样更快地解决它...