我正在制作一个程序来制作问题表格。问题保存到文件中,我想读取它们并将它们存储在内存中(我使用了一个向量)。 我的问题有以下形式:
1 TEXT What is your name?
2 CHOICE Are you ready for these questions?
Yes
No
我的问题是,当我从文件中读取这些问题时,我使用getline读取一行,然后将其转换为字符串流,读取问题的数量和类型,然后再次使用getline,这一次,串流,阅读其余的问题。 但它的作用是,它还会读出问题前面的空白区域,当我再次将问题保存到文件中并再次运行程序时,问题前面有2个空格,之后有3个空格和等......
这是我的一段代码:
getline(file, line);
std::stringstream ss(line);
int nmbr;
std::string type;
ss >> nmbr >> type;
if (type == "TEXT") {
std::string question;
getline(ss, question);
Question q(type, question);
memory.add(q);
关于如何解决这个问题的任何想法? getline可以忽略空格吗?
答案 0 :(得分:20)
查看this并使用:
ss >> std::ws;
getline(ss, question);
答案 1 :(得分:5)
没有getline不会忽略空格。但在使用getline之前,没有什么可以阻止你添加一些代码来跳过空格。例如
while (ss.peek() == ' ') // skip spaces
ss.get();
getline(ss, question);
无论如何都要这样。