首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输出未显示所有信息C++

问输出未显示所有信息C++
EN

Stack Overflow用户
提问于 2014-12-09 02:23:25
回答 3查看 87关注 0票数 0

我必须创建一个程序,它将输出1343名马拉松运动员的各种信息。我必须从csv电子表格中导入数据,所以我选择使用getline函数。我使用简单的递归来填充字符串数组,然后再使用递归来输出数据。但出于某种原因,它只想显示300左右跑步者的数据。下面是代码:

代码语言:javascript
复制
int main(){
  string data[1344];
  vector<string> datav;
  string header;
  ifstream infile("C:\\Users\\Anthony\\Desktop\\cmarathon.csv");
  int i = 0;

  if (infile.is_open()) {

    for (i=0; i<=1343; i++) {
      getline(infile, data[i]);
    }

    datav.assign(data, data+1344);
    for (int i = 0; i < datav.size(); i++) {
      cout << datav[i] << "\n";
    }
  }
}

我尝试使用向量,希望它能帮助分配所需的内存来正确地执行程序(如果这实际上就是这里的问题)。

该代码生成运行程序1045-1343的完美输出。我尝试过简单的工作方法,例如使用几个for()循环无缝地组合输出,但没有效果。如有任何资料,将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-09 02:51:39

您不需要从数组复制到向量。您可以直接添加到向量中。此外,在外部范围内隐藏另一个局部变量也是一种不太好的做法。

代码语言:javascript
复制
int main(){
  string line;
  vector<string> datav;
  string header;
  ifstream infile("C:\\Users\\Anthony\\Desktop\\cmarathon.csv");

  if (infile.is_open()) {
    // Are you supposed to read the header line first?
    getline( infile, header );
    while( getline( infile, line ).good() )
      datav.push_back( line );

    cout << "Container has " << datav.size() << " lines\n";
    for (size_t i = 0; i < datav.size(); i++) {
      cout << datav[i] << "\n";
    }
  }
}

当然,您仍然需要将每一行分解到各个字段,因此,按照EToreo的建议将类或结构向后推将是一个好主意。

票数 0
EN

Stack Overflow用户

发布于 2014-12-09 02:39:33

您应该尝试使用struct来表示CSV文件中的字段,然后生成该结构类型的向量。

现在,循环遍历文件,读取每一行直到到达文件的末尾(Google如何做到这一点)--不要假设1343,你不必这么做。当您在每一行中读取时,从您的结构中创建一个新的对象,并将其填充到该行的内容中(您将需要通过读取制表符(\t)或字符串的末尾来解析它),然后将它( datav.push(newObj) )放到您的向量上。

我建议在结构中使用正确的类型(int表示年龄,字符串表示名称,等等)。并将字符串值从文件传递到这些类型。做一些事情要容易得多,比如把每个人的年龄相加。你会感谢你自己(也许是我?)后来。

票数 0
EN

Stack Overflow用户

发布于 2014-12-09 02:44:38

如果您不需要使用向量:

代码语言:javascript
复制
for (i=0; i<=1343; i++) {
      cout << data[i] << endl;
    }

如果要打印出数据数组中的任何内容,如果需要在不同的变量中放置不同的字符串,也可以为getline函数指定一个Ded示波器。

然而,从长远来看,EToreo的方法可能对您更有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27370493

复制
相关文章

相似问题

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