Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;读取txt文件CSV值_C++_Visual C++_Csv_File Io - Fatal编程技术网

C++ C++;读取txt文件CSV值

C++ C++;读取txt文件CSV值,c++,visual-c++,csv,file-io,C++,Visual C++,Csv,File Io,我知道这篇文章以前是关于堆栈溢出的,我结合了各种教程;但是为什么这段代码在执行时会导致错误呢?它确实会编译 void leaderBoard::loadFromFile(void) { string line; ifstream leaderBoardFile ("leaderboard.data"); vector<string> playerInfoVector; if (leaderBoardFile.is_open()) {

我知道这篇文章以前是关于堆栈溢出的,我结合了各种教程;但是为什么这段代码在执行时会导致错误呢?它确实会编译

void leaderBoard::loadFromFile(void)
{
    string line;
    ifstream leaderBoardFile ("leaderboard.data");
    vector<string> playerInfoVector;
    if (leaderBoardFile.is_open())
    {
        while ( leaderBoardFile.good() )
        {
            playerInfoVector.clear();
            getline (leaderBoardFile,line);
            std::string input = line;
            std::istringstream ss(input);
            std::string token;
            //cout << line << endl;

            while(getline(ss, token, ',')) {
                //for current line;
                playerInfoVector.push_back(token);
            }

            string firstName = playerInfoVector.at(0);
            string stringAge = playerInfoVector.at(1);
            string stringScore = playerInfoVector.at(2);

            //int age;
            //stringstream(stringAge) >>    age;
            //int score;
            //stringstream(stringScore) >>  score;
            //addScore(firstName,age,score);
            ////stringstream(stringAge) >> age;

            ////Add text to vector (push back)
            playerInfoVector.clear();
        }
        leaderBoardFile.close();
    }

    else cout << "Unable to open file";
}
void排行榜::loadFromFile(void)
{
弦线;
ifstream排行榜文件(“leadboard.data”);
向量机;向量机;
如果(LeadboardFile.is_open())
{
while(leadboardfile.good())
{
playerInfo向量。清除();
getline(排行榜文件,行);
std::字符串输入=行;
std::istringstream ss(输入);
字符串标记;
//年龄;
//智力得分;
//stringstream(stringScore)>>分数;
//addScore(名字、年龄、分数);
////stringstream(stringAge)>>年龄;
////向矢量添加文本(向后推)
playerInfo向量。清除();
}
leadboardfile.close();
}
否则不能是的,多次

    while ( leaderBoardFile.good() )
    {
        playerInfoVector.clear();
        getline (leaderBoardFile,line);
应该是

    while ( getline (leaderBoardFile,line) )
    {
        playerInfoVector.clear();
令人难以置信的是,这个错误重复了多少次。实际上,您在第二个while循环中得到了正确的结果,那么为什么在第一个循环中出错呢

不幸的是,一些教程也有错误

在向量中添加一个检查,确定确实有三个项,这也是明智的

        if (playerInfoVector.size() < 3)
        {
            cerr << "Not enough items in player info vector\n";
            exit(1);
        }
        string firstName = playerInfoVector.at(0);
        string stringAge = playerInfoVector.at(1);
        string stringScore = playerInfoVector.at(2);
if(playerInfo.size()<3)
{

CIR和哪种错误会是什么样的?先生?“Labyrinth.exe 0x75 BFC41F的第一次机会例外:微软C++异常:STD::OXOFA在内存位置0x00 3EF29 8。”这似乎起到了作用。IYHO在开始阅读这行文字时还是在阅读这行文字后清除我的向量更好?你认为什么更有效率?@ConnorJackson我怀疑效率有什么不同。一开始似乎更符合逻辑。看,我认为在阅读这行文字后更符合逻辑。像厨师一样,你做一些东西,然后事后清理。@ConnorJackson这很公平,这不是一个回答肯定正确或错误的问题。