C++逗号分隔的Txt文件

C++ Comma Delimited Txt File

本文关键字:Txt 文件 分隔 C++      更新时间:2023-10-16

我正在使用我的简单系统,该系统使用.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;
}

有谁能帮我吗?谢谢

删除此

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;