【发布时间】:2012-12-06 15:25:14
【问题描述】:
我正在尝试读取具有以下输入(时间和价格)的文件:12:23:31
67 12:31:23 78 [...] 我创建了一个 struct,其中包含小时值,
分和秒。我使用strtok 标记各个值
并使用atof 来存储它们。但是,当我尝试时出现错误
标记时间:无法转换std::string' to 'char*' for argument 1 to 'char*'
struct time
{
int hours;
int minutes;
int seconds;
double price;
};
int main()
{
string file, input;
time* time_array;
char* tok;
cout << "Enter a file name to read input: ";
cin >> file;
ifstream file_name(file.c_str());
file_name >> input;
file_name >> input;
//while(!file_name.eof())
for(int i = 0; i < 4; i++)
{
time_array = new time;
file_name >> input;
tok = strtok(input, ":"); //ERROR HERE
while(tok != NULL)
{
*time_array.hours = atof(tok[0]);
*time_array.minutes = atof(tok[1]);
*time_array.seconds = atof(tok[2]);
}
file_name >> input;
*time_array.prine = atof(input);
}
}
【问题讨论】:
-
嗯,没有任何从
string到char *的隐式转换。您将需要使用c_str()方法。 -
@0A0D 还有?是的,你不能直接使用
c_str(),你需要复制一个字符串。 -
这是一种 XY 问题,您曾说过“我正在尝试使用 strtok 解析 C++ 中的字符串”,而您应该提出的问题是“我应该如何解析 C++ 中的字符串?” 那个问题的答案肯定不会是“使用strtok”。
-
@Let_Me_Be:是的,但是从您的评论来看,未来的读者并不清楚。