C ++逗号分隔的文本文件

时间:2015-02-04 11:40:05

标签: c++

我正在使用我的简单系统,它使用.txt文件作为C ++中的数据库。在我的情况下,我的代码工作,但输出有太多重复..我的系统显示名称列表是文本文件(逗号中的第二行)。

这是我的txt文件的示例:

2015-1111,Christian Karl,M
2015-1112,Joshua Evans,M
2015-1115,Jean Chloe,F
2015-1113,Shairene Traxe,F
2015-1114,Paul Howard,M

我的愿望输出:

Christian Karl
Joshua Evans
Jean Chloe
Shairene Traxe
Paul Howard

这是问题..它有很多重复.. 我目前的输出:

Christian Karl
Christian Karl
Christian Karl
Joshua Evans
Joshua Evans
Joshua Evans
Jean Chloe
Jean Chloe
Jean Chloe
Shairene Traxe
Shairene Traxe
Shairene Traxe
Paul Howard
Paul Howard
Paul Howard

我尝试多次调试我的代码,但似乎什么也没发生..

#include <string>
#include <vector>
#include <functional>
#include <iostream>
#include <fstream>
using namespace std;
void split(const string& s, char c,
           vector<string>& v) {
   string::size_type i = 0;
   string::size_type j = s.find(c);
   while (j != string::npos) {
      v.push_back(s.substr(i, j-i));
      i = ++j;
      j = s.find(c, j);
      if (j == string::npos)
         v.push_back(s.substr(i, s.length( )));
   }
}
int main( ) {
  ifstream in("db.txt");

  char str[255];
  while(in) {
    in.getline(str, 255);  // delim defaults to '\n'

   vector<string> v;
   split(str, ',', v);
   for (int i = 0; i < v.size( ); ++i) {
      cout << v[1] << '\n';
   }

  }

   system("pause");
   return 0;
}

任何可以帮助我的人?谢谢!

1 个答案:

答案 0 :(得分:4)

删除此

for (int i = 0; i < v.size( ); ++i) {
  cout << v[1] << '\n';

}

并改为使用

if(v.size()>0){
    cout << v[1] << '\n';
}
else{
    break;
}

或更好的

cout << v[1] << endl;