[英]How can I return a value from a function into another functions? C++ [closed]
我上周开始编程,现在我想创建一个 Vocabeltrainer。
现在,一切正常。 我的问题出在代码中的//Menü
。 用户可以输入他的名字。 然后他的名字与字符串值firstname
相关联。
function 将此值返回给//Main
,其中:
string user = voc_menu();
但我也希望这个值在//Vokabeln Hinzufügen
。
我把值放在 function 中:
addition(german, english, user);
但是如果我需要放其他东西,它就不起作用,因为在addition()
内部最多是三个值。
有人能帮我吗?
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <iterator>
#include <conio.h>
#include <io.h>
#include <windows.h>
#include <sys/types.h>
#include <sys/stat.h>
using namespace std;
const string OutputFolder = "C:\\Users\\esche\\Desktop\\Programming\\C++\\Vokabeltrainer\\User";
//Datenbank German/English Vokabeln
vector<string> loadFile(string txtFile) {
ifstream in(txtFile);
string str;
vector<string> language;
while (getline(in, str)) {
if(str.size() > 0)
language.push_back(str);
}
return language;
}
void safeFile(string txtFile, vector<string> language) {
ofstream output_file(txtFile);
ostream_iterator<string> output_iterator(output_file, "\n");
copy(language.begin(), language.end(), output_iterator);
}
//Regeln
void rules() {
cout << "Regeln:" "\n";
cout << "-keine Leerzeichen" "\n";
cout << "-Auf Groß- und Kleinschreibung achten" "\n";
cout << "Wenn Sie jetzt los legen wollen drücken sie ENTER." "\n";
}
//Menü
string voc_menu_detail() {
cout << "Bitte geben Sie Ihre Auswahl an: " "\n";
cout << "(0) Programm beenden" "\n";
cout << "(1) Neue Vokabel hinzufügen" "\n";
cout << "(2) Vokabeltrainer starten" "\n";
string selection;
cin >> selection;
cout << "Deine Auswahl: " + selection + "\n";
return selection;
}
string voc_menu() {
cout << "Vokabeltrainer" "\n";
cout << "Geben Sie Ihren Vornamen ein:" "\n";
string firstname;
cin >> firstname;
struct stat info;
if( stat( string(OutputFolder +"\\"+ firstname).c_str(), &info ) != 0 ) {
if (CreateDirectory(OutputFolder.c_str(), NULL), ERROR_ALREADY_EXISTS == GetLastError()) {
CreateDirectory(string(OutputFolder +"\\"+ firstname).c_str(), NULL);
cout << "Guten Tag " + firstname + "." "\n";
}
} else if( info.st_mode & S_IFDIR ) {
cout << "Guten Tag " + firstname + "." "\n";
} else {
cout << "FEHLER";
}
return firstname;
}
//Vokabeln Hinzufügen
void addition(vector<string> german, vector<string> english, string user) {
string voc_english;
string voc_german;
rules();
for(int i = 1; i > 0; i++) {
if(getch()=='0') {
break;
}
cout << "Geben Sie eine neue Vokabel ein (Deutsch): " "\n";
cin >> voc_german;
cout << "Sie haben erfolgreich die deutsche Vokabel " + voc_german + " hinzugefuegt." "\n";
cout << "Geben Sie nun die passende Vokabel dazu auf Englisch ein: " "\n";
cin >> voc_english;
german.push_back(voc_german);
english.push_back(voc_english);
safeFile(string(OutputFolder +"\\"+ user + "\\german.txt").c_str(), german);
safeFile(string(OutputFolder +"\\"+ user + "\\english.txt").c_str(), english);
cout << "Sie haben erfolgreich die englische Vokabel " + voc_english + " passend zu der deutschen Vokabel " + voc_german + " hinzugefuegt." "\n";
cout << "Betaetigen Sie ENTER um weiter zu machen oder 0 um ins Menue zu gelangen." "\n";
}
cout << "Hinzugefügte Vokabeln: " + to_string(german.size()) + "\n";
}
//Game
void game(vector<string> german, vector<string> english) {
cout << "Der Vokabeltest wird gestartet..." "\n";
rules();
for(int i = 1; i > 0; i++) {
int random = rand() % german.size();
string random_english = english[random];
string random_german = german[random];
if(getch()=='0') {
break;
}
cout << "Was heißt " + random_german + " auf Englisch?" "\n";
string userInput;
cin >> userInput;
if(userInput == random_english) {
cout << "Richtig." "\n";
} else {
cout << "Falsch... Richtig waere ~" + random_english + "~ gewesen." "\n";
}
cout << "Betaetigen Sie mit ENTER um weiter zu machen oder 0 um ins Menü zu gelangen." "\n";
}
}
//Main
int main() {
string user = voc_menu();
for(int i = 1; i > 0; i++) {
vector<string> german = loadFile(string(OutputFolder +"\\"+ user + "\\german.txt").c_str());
vector<string> english = loadFile(string(OutputFolder +"\\"+ user + "\\english.txt").c_str());
string selection = voc_menu_detail();
if(selection == "1") {
addition(german, english, user);
} if(selection == "2") {
game(german, english);
}
if(selection == "0") {
break;
}
}
return 0;
}
您不能,从另一个 function 访问该变量内容的唯一方法是将其保存到 scope 到达该 ZC1C425268E68385D1AB5074C17A94F1 的变量中(例如,我理解为什么全局变量不能) t 简单地按原样传递,如果您需要传递更多参数到附加 function,请向该 function 添加更多参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.