C++ c++;从文件I/O解析数据
我正在为1编写代码。通过命令行参数2从文件读入。解析每行数据(字符串)和3。将数据拆分为4个子字符串 假设我有game.txtC++ c++;从文件I/O解析数据,c++,C++,我正在为1编写代码。通过命令行参数2从文件读入。解析每行数据(字符串)和3。将数据拆分为4个子字符串 假设我有game.txt 3 overwatch|hanzo|junkrat|reinhart league of legends|vayne|ezreal|master yi starcraft|marine|zergling|zealot 我想要的输出是将每行数据分割成4个子字符串,并将每一列保存到某种容器中。可能是字符串的linkedlist或字符串数组。 所以 我已经尝试了几种方法来解
3
overwatch|hanzo|junkrat|reinhart
league of legends|vayne|ezreal|master yi
starcraft|marine|zergling|zealot
我想要的输出是将每行数据分割成4个子字符串,并将每一列保存到某种容器中。可能是字符串的linkedlist或字符串数组。
所以
我已经尝试了几种方法来解决这个问题,但是我看不到同时读取和解析字符串的逻辑。这个概念对我来说还是新的,我需要一些关于从哪里开始以及如何解决这个问题的建议
我可以在这里做什么?您可以使用读取第一个数字和文件中的数字。
要从任意行获取数据,可以使用。可以使用行字符串创建istringstream对象。
之后,您可以使用delim='|'的方法从该行读取组件
之后,您可以根据需要打印行
using String = std::string;
int main(int argc, const char * argv[]) {
// insert code here...
std::ifstream inputFileStream("Input.txt");
int count;
inputFileStream>>count;
inputFileStream.ignore(1, '\n');
for(int i = 0; i < count; i++)
{
String line;
std::getline(inputFileStream, line);
std::istringstream lineStream(line);
String nameOfGame;
String leastFav;
String fav;
String bestCharacter;
std::getline(lineStream, leastFav, '|');
std::getline(lineStream, nameOfGame, '|');
std::getline(lineStream, fav, '|');
std::getline(lineStream, bestCharacter, '|');
std::cout<< leastFav <<"\n"<<nameOfGame<<"\n"<<fav<<"\n"<<bestCharacter<<"\n\n";
}
return 0;
}
使用String=std::String;
int main(int argc,const char*argv[]{
//在这里插入代码。。。
std::ifstream inputFileStream(“Input.txt”);
整数计数;
输入文件流>>计数;
忽略(1,“\n”);
for(int i=0;i 请显示您的尝试。这将有助于获得更好的答案。如果每一行始终具有相同的内容,请考虑定义类并使用该类的STD::vector可以用来读取文件中的行。堆栈溢出的无数例子。您可以使用相同的函数读取<代码> < <代码> >从<代码>分隔的字符串。std::istringstream
。所有流类上都有helpergetline
成员函数。非常感谢Andrew。我确实读了一些关于istringstream的示例,但我不完全理解它是如何使用的。我将再试一次并发布后续状态。
using String = std::string;
int main(int argc, const char * argv[]) {
// insert code here...
std::ifstream inputFileStream("Input.txt");
int count;
inputFileStream>>count;
inputFileStream.ignore(1, '\n');
for(int i = 0; i < count; i++)
{
String line;
std::getline(inputFileStream, line);
std::istringstream lineStream(line);
String nameOfGame;
String leastFav;
String fav;
String bestCharacter;
std::getline(lineStream, leastFav, '|');
std::getline(lineStream, nameOfGame, '|');
std::getline(lineStream, fav, '|');
std::getline(lineStream, bestCharacter, '|');
std::cout<< leastFav <<"\n"<<nameOfGame<<"\n"<<fav<<"\n"<<bestCharacter<<"\n\n";
}
return 0;
}