【发布时间】:2013-10-12 07:39:23
【问题描述】:
我目前在尝试使用结构从文本文件中提取数据然后将其存储到向量中时遇到问题。但无论我做什么,除非我将 float,int 的值更改为字符串,否则它总是会给我这样的错误:
MissionPlan.cpp:190:错误:从“void*”到“char**”的无效转换
MissionPlan.cpp:190:错误:无法将参数“2”的“float”转换为“size_t*”到“__ssize_t getline(char**, size_t*, FILE*)
这是我的结构:
struct CivIndexDB {
float civInd;
int x;
int y;
}
这是我的示例文本文件:
3.2341:2:3
1.5234:3:4
这是我用来从文本文件中提取数据然后将其存储到向量中的代码:
string line = "";
while (getline(civIndexFile,line)) {
stringstream linestream(line);
getline(linestream,civDb.civInd,':');
getline(linestream,civDb.x,':');
getline(linestream,civDb.y);
civIndexesList.push_back(civDb);
}
将结构中的变量类型更改为字符串不是我需要的,因为稍后在应用程序中,我需要根据其浮点值对向量值进行排序。
感谢您提供的任何帮助。谢谢!
【问题讨论】:
-
为什么不用二进制文件?我不记得如何编写二进制文件,但我认为在您的示例中它们更合适。
-
你总是可以读入一个字符串,然后将字符串转换成你在你的结构中需要的数字。但我认为 P0W 的答案是最简单的。
-
@john 如果结构变量是字符串类型,那么存储到向量中的数据必须是字符串类型。即使我将字符串转换为我需要的类型,我仍然需要一个能够存储 float、int、int 的向量(我认为这几乎是不可能的)并稍后对其进行排序。
-
@JoelSeah 我没有说结构变量应该是字符串。我的意思是你可以读入一个 local 字符串变量,然后当你把这个数字放在你的结构中时将这个局部变量转换为一个数字。
string s; getline(linestream,s,':'); civDb.civInd=convertStringToFloat(s);。当然你还是要写 convertStringToFloat 函数。
标签: c++ vector struct text-files