此向量有向量问题无法正常工作

this vector has vector probelem is not working

问题是它打印了全名而不是关于此人的其余部分。 有人可以指导我吗? 非常感谢您的帮助!









  auto itr = find(my_vec.begin(), my_vec.end(), search );
   if(itr != my_vec.end()) 
   {  
    std::cout << "Match found " <<  search << std::endl;
    std::cout <<  "\nFull name:    " << search << std::endl;
       } else {
         std::cout << "Match not found "<< std::endl;
       }






如果每个条目包含 6 行。然后你可以打印从你找到的行开始的所有行:

auto itr = find(my_vec.begin(), my_vec.end(), search );
if(itr != my_vec.end()) 
{  
  std::cout << "Match found " << std::endl;
  // print the next 6 lines
  for(int remaining = 6;remaining > 0 && itr!=my_vec.end(); itr++,remaining--) {
    std::cout << *itr << std::endl;
  }
} else {
      std::cout << "Match not found "<< std::endl;
}

您的代码存在一些样式问题:

  1. 无需显式初始化字符串,它们默认为空(参见here)。
  2. 保持风格一致。例如,始终在函数签名所在的同一行或下一行开始括号。
  3. 无需在函数末尾显式关闭文件,这是在 object 超出范围时完成的(参见 (destructor) here)。
  4. 无需包含 <map><iomanip> headers。
  5. 不要保留未使用的变量。
  6. 为您的变量命名。
  7. 当应用程序正常运行时,不要 return 向 OS 发送错误代码。找不到名字不是错误,是吗?

您的文件中每个联系人似乎有 6 个条目,因此您只需再打印 5 行即可。您不需要将线条存储在向量中,只需在进行时解析并打印它们。这是一个例子:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <fstream>

void findContact(std::string fullName, std::string contactListPath) {

    std::ifstream inFile{contactListPath};
    if (!inFile) {
        std::cerr << "File could not be open!" << std::endl;
        return;
    }

    std::string line;
    while (std::getline(inFile, line)) {
        if (line == fullName) {
            std::cout << "Match found: \n";
            std::cout << "\nFull name: " << fullName;
            std::cout << "\nAddress: " << (std::getline(inFile, line), line);
            std::cout << "\nE-mail: " << (std::getline(inFile, line), line);
            std::cout << "\nPhone: " << (std::getline(inFile, line), line);
            std::cout << "\nBirthday: " << (std::getline(inFile, line), line);
            std::cout << "\nNote: " << (std::getline(inFile, line), line) << std::endl;
            return;
        }
    }

    std::cout << "Match not found " << std::endl;
}

int main() {

    std::string fullName;
    std::string contactListPath;

    std::cout << "Enter full name to search: ";
    std::getline(std::cin, fullName);

    std::cout << "Enter path to contact list: ";
    std::getline(std::cin, contactListPath);

    findContact(fullName, contactListPath);

    return 0;
}