【发布时间】:2014-03-16 16:17:26
【问题描述】:
我有一个关于将文件中的坐标解析到我的 C++ 程序中的问题。
文件"file.txt"的内容由一行组成:"1,2"
1 需要是 X 坐标。 ',' 是分隔符。 2 是 Y 坐标。
我的程序的输出是:"1"。
看起来我的程序只是将字符串放在向量中的分隔符前面,然后认为它是文件的结尾。
我该如何解决这个问题?
你可以在这里找到我的代码。提前致谢!
#include <string>
#include <vector>
#include <fstream>
#include <iostream>
#include <sstream>
char data[220];
void parseString(std::string string);
int main(int argc, char **argv) {
std::ifstream indata("file.txt");
std::vector <std::string> buffer(5);
int i = 0;
while(indata.good())
{
indata.getline(data, 220);
parseString(data);
++i;
}
return 0;
}
void parseString(std::string string){
std::string delimiter = ",";
size_t pos = 0;
std::string token;
std::vector<std::string> tempVector(2);
int i = 0;
while ((pos = string.find(delimiter)) != std::string::npos) {
token = string.substr(0, pos);
tempVector[i] = token;
string.erase(0, pos + delimiter.length());
}
for(std::string S : tempVector){
std::cout << S << std::endl;
}
}
【问题讨论】:
-
像往常一样,当这类问题出现时,我建议您再次阅读
std::getline、std::istringstream和std::getline。 -
在这种情况下,您可能还想研究结构和
std::stoi。 -
除了我的回答,请将您的
char[]替换为std::string,将std::string传递给const&(至少在C++98/03 中),注意惯用循环C++ 流的形式(即使用!indata而不是good()函数的任何东西),并且更喜欢独立的std::getline函数而不是getline成员函数。 -
while(indata.good())不不不不不
标签: c++ string parsing coordinates delimiter