2014-03-24 69 views
0

我需要编写一个函数来读取文件,理想情况下将该文件中的字符串存储到vectorstring s中。文件读取功能

到目前为止,我有这样的事情:

void loadCars() { 
    fstream carFile; 
    string car; 
    carFile.open("car.txt"); 
    if (carFile.is_open()) { 
     while (getline(carFile, car)) { 
      cout << car << "\n"; 
     } 
     carFile.close(); 
    } else { 
     cout << "unable to open file" << endl; 
    } 
} 

谁能帮我,我需要的所有功能做的是从包含四根弦的文本文件阅读:

CAR 1
CAR2
的Car3
CAR4

我想读取它们并将它们理想地放入矢量中。 cout纯粹是为了试图测试它的工作原理,但它无法打开文件。

+2

您所面临的具体问题是什么? – 4pie0

+0

程序是否回读给你''无法打开文件''?如果是这样,你的可执行文件的目录中的文件是? – 0x499602D2

+0

如果无法打开文件,赔率是您当前的工作目录不在您认为的位置。快速执行['getcwd()'](http://linux.die.net/man/3/getcwd)并将结果目录转储到'std :: cerr'将帮助您知道“你在哪里” 。文件权限也有可能不允许你打开它,但这是有点延伸。最后,如果这是从Visual Studio运行,* project *文件(.vcprojx)所在的文件夹是调试器启动的默认工作目录。确保你的文件在文件夹中。 – WhozCraig

回答

0

并且理想地将来自该文件的字符串存储到字符串向量中。

只需扩展您的功能如下,以收集导致载体:

void loadCars(std::vector<std::string>& result) { 
    result.clear(); 
    fstream carFile; 
    string car; 
    carFile.open("car.txt"); 
    if (carFile.is_open()) { 
     while (getline(carFile, car)) { 
      result.push_back(car); 
      cout << car << "\n"; 
     } 
     carFile.close(); 
    } 
else { 
     cout << "unable to open file" << endl; 
    } 
} 

至于你的问题,打开该文件,这可能最有可能发生,因为该文件是在你的程序不可用当前工作目录(检查你的调试设置),或者你没有访问权限。

0

您可以定义一个字符串向量,例如:

#include <array> 

std::vector<std::string> cars; 

// Get your car... 
cars.push_back(car); 

例如参见here以获得最新的参考。