[英]Reading lines with spaces in C++
我應該逐行讀取一個文本文件,並提取三個變量:
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
因此,它不會讀取禮物行的其余部分,而是停留在空白處( ie gift = XBox360
)。 如何解決此問題以讀取其余的禮物名稱? 謝謝
這取決於名稱是否始終在單個單詞中以及空格是否始終在空格中(或者是否可以這樣替換空格)。 這樣的事情應該為您解決問題:
std:: string name, gift, more;
if (!(iss >> index >> name >> gift)) { break; } // error
while (iss >> more) { gift += " "+more; }
但是,如果名字可以是“ John Smith”,那么您就無法確定名字的結尾和禮物的開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.