C++ 如何使函数保存对C+中结构输入的修改+;?

C++ 如何使函数保存对C+中结构输入的修改+;?,c++,struct,io,C++,Struct,Io,我的文件中有两个函数,一个用于在结构中输入信息('vpis()'),另一个用于打印结构的内容('izpis()')。输入功能不保存我输入的信息。代码如下: #include <iostream> #include <string> using namespace std; enum TIP_NASLOVA { STALNI, ZACASNI }; struct Naslov { string ulica; string posta;

我的文件中有两个函数,一个用于在结构中输入信息('vpis()'),另一个用于打印结构的内容('izpis()')。输入功能不保存我输入的信息。代码如下:

#include <iostream>
#include <string>
using namespace std;

enum TIP_NASLOVA {
    STALNI,
    ZACASNI
};

struct Naslov {
    string ulica;
    string posta;
    int postna_stevilka;
    TIP_NASLOVA tip;
};

struct Oseba {
    string ime;
    string priimek;
    int starost;
    Naslov naslov;
};

void izpis(Oseba oseba) {
    cout << "IZPIS VNOSA" << endl << endl;
    cout << "Ime: " << oseba.ime << endl;
    cout << "Priimek: " << oseba.priimek << endl;
    cout << "Starost: " << oseba.starost << endl;
    cout << "Tip Naslova: " << oseba.naslov.tip << endl;
    cout << "Posta: " << oseba.naslov.postna_stevilka << " " << oseba.naslov.posta << endl;
    cout << "Naslov: " << oseba.naslov.ulica << endl;
}

void vpis(Oseba oseba) {
    int tip;
    cout << "VPIS PODATKOV NOVEGA VNOSA" << endl << endl;
    cout << endl << "VPISI IME: ";
    cin >> oseba.ime;
    cout << endl << "VPISI PRIIMEK: ";
    cin >> oseba.priimek;
    cout << endl << "VPISI STAROST: ";
    cin >> oseba.starost;
    cout << endl << "VPISI TIP NASLOVA ( 1-STALNI / 2-ZACASNI ): ";
    cin >> tip;

    switch (tip){
        case 1:
            oseba.naslov.tip = STALNI;
            break;
        case 2:
            oseba.naslov.tip = ZACASNI;
            break;
        default:
            cout << "Napaka! Izbrali ste napacen tip naslova. " <<endl;
            break;
    }

    cout << endl << "VPISI POSTNO STEVILKO: ";
    cin >> oseba.naslov.postna_stevilka;
    cout << endl << "VPISI POSTO: ";
    cin >> oseba.naslov.posta;
    cout << endl << "VPISI NASLOV (FORMAT:'TrgGeneralaMaistra1'): ";
    cin >> oseba.naslov.ulica;
    cout << endl;
}

int main() {
    Oseba oseba;
    int x;
    cout << "VPIS IN IZPIS OSEBNIH PODATKOV" << endl << endl;
    for (;;) {
        cout << "Dolocite zahtevano operacijo (1-VPIS, 2-IZPIS): ";
        cin >> x;
        cout << endl << endl;
        switch (x){
        case 1:
            vpis(oseba);
            break;
        case 2:
            izpis(oseba);
            break;
        default:
            cout << "Izbrali niste nobene operacije!" << endl << endl;
        }
    }

    return 0;
}
#包括
#包括
使用名称空间std;
纳斯洛娃酒店{
斯大尼,
扎卡斯尼
};
纳斯洛夫结构{
乌里卡;
线状邮递;
印度邮政局;
TIP_NASLOVA TIP;
};
Oseba结构{
字符串输入法;
字符串priimek;
int starost;
纳斯洛夫·纳斯洛夫;
};
无效izpis(Oseba-Oseba){

cout如果要对对象进行更改,则需要通过引用传递对象:)

更改
void vpis(Oseba-Oseba){


void vpis(Oseba&Oseba){

您正在通过值将结构传递给每个函数,因此每个函数都会收到结构的副本,因此您所做的任何更改都是对副本的,而不是原始的。请更改您的函数,以通过引用传递结构

void izpis(const Oseba &oseba)


非常感谢你这么快的回复。这正是我想要的。我花了大约2个小时盯着屏幕并尝试用谷歌搜索这个。我调用函数时一直尝试链接它。比如:vpis(Oseba&Oseba);谢谢你,雷米。我修复了它。
void vpis(Oseba &oseba)