我正在编写代码1.通过命令行参数从文件读入,2。解析每行数据(字符串)和3.将数据拆分为4个子字符串。
说我有game.txt
3
overwatch|hanzo|junkrat|reinhart
league of legends|vayne|ezreal|master yi
starcraft|marine|zergling|zealot
我想要的输出是将每行数据分成4个子串,我想将每个相应的列保存到某种容器中。可能是字符串的链表或字符串数组。 所以,
overwatch
hanzo
junkrat
reinhart
league of legend
vayne
ezreal
...
String nameOfGame = overwatch;
String leastFav = hanzo;
String fav = junkrat;
String bestCharacter = reinhart;
我已经尝试了几种方法来解决这个问题,但是我看不到逻辑上有字符串读入和同时解析。这个概念对我来说还是新的,我需要一些建议,从哪里开始以及如何解决问题。
我能在这做什么?
答案 0 :(得分:1)
您可以使用ifstream从文件中读取第一个数字和lines。 要从任意行获取数据,您可以使用istringstream。您可以使用行字符串创建istringstream对象。 之后,您可以使用带有delim ='|'的方法getline来读取该行中的组件。
之后,您可以根据需要打印行
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;
}