尝试读取 C++ 中的特定行,但没有显示任何内容

问题描述 投票:0回答:1

所以我正在为一个更大的项目编写一些测试代码,当输入代码和地址时,它将显示特定的数据,但目前什么都没有运行,我根本没有得到任何输出。

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>

int main(){
    std::ifstream testdata; testdata.open("testdata.csv");
    std::string line, csvitem;
    int linenum = 0;
    int linenumsought = 2;

    if(testdata.is_open()){
        while (testdata){
            linenum++;

            if(linenum == linenumsought){
                std::cout << line << '\n';
                std::istringstream myline(line);

                while(getline(myline, csvitem, ',')){
                    std::cout << csvitem << '\n';
                }
            }
        }
        testdata.close();
    }

    return 0;
}

我真的很累,很可能只是错过了一些小事,哈哈,但如果有人能帮助我解释为什么我根本没有从我的 csv 文件中得到任何显示,我将非常感激。

House,111111,2046
House2,222222,2222

csv 文件^^

每当我设法获得输出时,它都会在终端中无限地运行创建行。或者它只会说“权限被拒绝”

c++
1个回答
0
投票

您的代码错过了将文件读入

line
变量的情况。

一个简单的更正是替换:

   while (testdata){

具有以下内容:

   while (std::getline(testdata,line)) {

此更改不仅一次读取一行,而且当读取失败时结束循环(这将发生在文件末尾或存在某种类型的错误)。

© www.soinside.com 2019 - 2024. All rights reserved.