这是我管理读取的txt文件的内容。
X-axis=0-9
y-axis=0-9
location.txt
temp.txt
我不确定是否可行,但是在阅读了该txt文件的内容之后,我试图将x和y轴范围仅存储到2个变量中,以便我可以将其用于以后的功能。有什么建议吗?我需要使用向量吗?这是读取文件的代码。
string configName;
ifstream inFile;
do {
cout << "Please enter config filename: ";
cin >> configName;
inFile.open(configName);
if (inFile.fail()){
cerr << "Error finding file, please re-enter again." << endl;
}
} while (inFile.fail());
string content;
string tempStr;
while (getline(inFile, content)){
if (content[0] && content[1] == '/') continue;
cout << endl << content << endl;
答案 0 :(得分:0)
取决于文件的样式,如果始终确保样式保持不变,则您可以逐个字符读取文件并实现模式识别之类的
if (tempstr == "y-axis=")
,然后使用类似的功能
将适当的子字符串转换为整数std::stoi
并存储
答案 1 :(得分:0)
我将假设您已经在某个位置的单个字符串中包含了.txt文件的全部内容。在这种情况下,您的下一个任务应该是分割字符串。就个人而言,是的,我建议使用向量。假设您想用换行符分隔该字符串。像这样的功能:
#include <string>
#include <vector>
std::vector<std::string> split(std::string str)
{
std::vector<std::string> ret;
int cur_pos = 0;
int next_delim = str.find("\n");
while (next_delim != -1) {
ret.push_back(str.substr(cur_pos, next_delim - cur_pos));
cur_pos = next_delim + 1;
next_delim = str.find("\n", cur_pos);
}
return ret;
}
将用换行符分隔输入字符串。从那里,您可以开始解析该向量中的字符串。您要查看的关键功能是std::string
的{{1}}和substr()
方法。快速的Google搜索应该可以带您找到相关的文档,但是在这里,以防万一:
http://www.cplusplus.com/reference/string/string/substr/ http://www.cplusplus.com/reference/string/string/find/
现在,假设您在find()
中有字符串"X-axis=0-9"
。然后,您可以为vec[0]
做一个find
,然后获取该索引之前和之后的子字符串。之前的内容将是“ X轴”,之后的内容将是“ 0-9”。这将使您知道“ 0-9”应归于任何“ X轴”。从那里,我认为您可以弄清楚,但是希望这对您从哪里开始有个好主意!
答案 2 :(得分:0)
std::string::find()
可用于搜索字符串中的字符; std::string::substr()
可用于将字符串的一部分提取到另一个新的子字符串中; std::atoi()
可用于将字符串转换为整数。然后,这三个函数将使您可以对content
进行一些处理,特别是:(1)搜索content
以查找第一个值(=
的开始/停止定界符(-
和第二个值(-
和string::npos
),(2)将它们提取为临时子字符串,然后(3)将子字符串转换为int。你想要的是什么。