C++ 逗号分隔的 Txt 文件

标签 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;
}

谁能帮帮我?谢谢!

最佳答案

删除这个

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;

关于C++ 逗号分隔的 Txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28320465/

相关文章:

c++ - 可变参数模板参数的模板类型数组

c++ - 如何在成员函数上使用 std::async?

c++ - 重新声明静态 constexpr 数据成员?

c++ - 从 qrc 文件加载 .qss 主题

c++ - 为什么我没有使用我类(class)的 toString 方法获得输出?

c++ - 删除 fopen 成功创建的文件时权限被拒绝

c++ - 概念同时执行循环

c++ - 在 Qt 桌面应用程序上运行 Selenium

c++ - __PTRDIFF_TYPE__ 的跨平台版本

c++ - VTK中场景的旋转中心