首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在getline()中使用多个分隔符(',‘,'/n')?

如何在getline()中使用多个分隔符(',‘,'/n')?
EN

Stack Overflow用户
提问于 2020-12-06 08:08:31
回答 2查看 81关注 0票数 0

我正在尝试使用fstream读取代码中的文本文件。该文本文件具有以下结构,

代码语言:javascript
复制
Main,Johnsons,4,4
Lake,Smiths,1,2
Orchid,Hendersons,3,8

我正在尝试做以下几件事。

代码语言:javascript
复制
Neighborhood n1;
ifstream houses;
houses.open("houses.txt");
string line;

string street;
string family;
int house;
int rooms;

int colptr = 1;

while (houses.good()) {
   getline(houses, line, ',');

        switch (colptr) {
        case 1: {
            col1 = line;
            colptr++;
            break;
        }
        case 2: {
            col2 = line;
            colptr++;
            break;
        }
        case 3: {
            col3 = stoi(line);
            colptr++;
            break;
        }
        case 4: {
            col4 = stoi(line);
            colptr = 1;
            House h(col1, col2, col3, col4);
            n1.addHouse(h);
            break;
        }
        default: {
            break;
        }
        }
    }

House是一个使用(string,string,int,int)来构造房屋的类,Neighborhood类的方法addHouse()只是将房屋添加到房屋列表中。

代码抛出一个错误,因为它试图将字符串转换为int。我发现在4次迭代中,它会尝试将"4 Lake“转换成一个整数--这显然是做不到的。

如果将文本文件格式化为末尾的',‘,则代码可以工作,如

代码语言:javascript
复制
Main,Johnsons,4,4,

除非这对我不起作用,因为我得到的文本文件总是和开头显示的一样。

提前谢谢你!

EN

回答 2

Stack Overflow用户

发布于 2020-12-06 08:23:39

您可以在一个嵌套循环中调用getline()两次。第一个读取输入通常是“逐行",第二个在std::stringstream对象的帮助下用逗号”,“拆分:

代码语言:javascript
复制
//...
while (houses.good()) {
    getline(houses, line); //use default getline() - line by line
    std::stringstream ss (line);
    std::string word;
    while (getline (ss, word, ',')) {
        //... the rest of code
        //...
票数 1
EN

Stack Overflow用户

发布于 2020-12-06 08:22:03

您可以获取该行并在末尾添加,字符,然后获取单词。

代码语言:javascript
复制
while (houses.good()) {
   std::istringstream input;
   getline(houses, line);
   line += ',';
   input.str(line);
   for (std::string token; getline(input, token, ','); ) {
       // process words
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65163321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档