我应该逐行读取一个文本文件,提取三个变量:
1- int index -> index of list
2- string name -> name of a person
3- string gift -> Christmas gift
一个例子:
1 Robert XBox360 Gaming Console
2 Harold Dress Shirt
因此对于第一行index = 1 , name = Robert , gift = XBox360 Gaming Console
这就是我一直在做的事情:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
int main() {
std::ifstream infile("giftlist.txt");
std::string line;
while (std::getline(infile, line))
{
std::istringstream iss(line);
int index;
std:: string name, gift;
if (!(iss >> index >> name >> gift)) { break; } // error
std::cout << index << " "<< name << " " << gift << std::endl;
}
return 0;
}
输出:
1 Robert XBox360
因此,它不会读取礼品行的其余部分,而是停留在空白处(i.e gift = XBox360
)。如何解决此问题以阅读礼品名称的其余部分?感谢
答案 0 :(得分:0)
这取决于名称是否始终在一个单词中,以及白色空格是否始终为空格(或者如果它可以替换它们)。这样的事情可以帮到你:
std:: string name, gift, more;
if (!(iss >> index >> name >> gift)) { break; } // error
while (iss >> more) { gift += " "+more; }
但如果名字可能是&#34; John Smith&#34;那么你很难确定名字的结束和礼物的开始。