簡體   English   中英

在C ++中讀取帶空格的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM