C++ 和文件输出

标签 c++ arrays string file for-loop

我正在尝试做一个 C++ 程序,它做这样的事情: 在一个姓氏和名字的列表(文件)中,读取相同的姓氏并在另一个文件中盖章 'people with surname surname are: name,name姓名 等.. 这就是我所做的,但出了点问题

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

struct persona
{
    string nome;
    string cognome;
};

int carica_vettore (persona a [])
{
    string name, surname;
    int i=0, np=0;
    ifstream fin ("people.txt");
    while (cin >> name >> surname) 
    {
        if (name == "0" && surname == "0")
            break;

        a[i].nome = name;
        a[i].cognome = surname;
        i++;
        np++;
    }
    return np;

}

int main ()
{
    string nomepers, cognomepers;
    int cont = 0;
    persona persone [50];
    cont = carica_vettore(persone);
    for (int k = 0; k < cont; k++)
    {
        for (int j = k+1; j < cont-1; j++)
            if (persone[k] == persone[j])
                cout << "People with surname (" << persone[i] << "), are: " << persone[i].nome;
    }   
    return 0;
}

还有我忘记在文件上盖章了,但我认为这不是什么大问题

那么,有人可以帮助我吗?

2 'for' 谁检查是否有任何相同的姓氏 btw

最佳答案

你不是要从文件中读取吗?

ifstream fin("people.txt");
while(cin >> name >> surname) // cin reads from the console, waits for your input

替换cinfin .

你也没有operator==对于 persona重载:

bool operator==(persona const& other) const
{
    return nome == other.nome && cognome == other.cognome;
}

还有operator<< ,这里是必需的:

cout << "People with surname (" << persone[i] << ...

打印 persone[i].nomepersone[i].cognome相反。

关于C++ 和文件输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34250417/

相关文章:

C/C++ 如何将 int 转换回字符串(一个单词)?

c++ - 当我尝试运行我的 C++ 程序时收到警告

c++ - 1 到 15 之间的随机数

arrays - 如果移动超出数组的最后一个元素,值是多少?

mysql - 使用 MySQL Regex - 匹配字符串的第一个单词和第二个字母

javascript - 如何将 JavaScript 数组转换为元素

java - JNI 字符串返回值

C++ 11 : decltype behaviour of T and T& derivation [ behaviour distinction between both ]

c - 找到二维数组中的所有组合,以在 C 中的剧院中容纳可变数量的人?

python多重处理比正常慢-计算太微不足道?