Я не могу получить «полный» , чтобы отобразить конкатенацию First и last. Он компилируется, но когда я запустил его, он будет пустым. Можете ли вы сказать мне, почему? Пытались найти его часами.Может кто-нибудь сказать мне, почему моя строка пуста после передачи аргумента?
Вот мое declerations
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
#define tax 0.30
#define parking_deductions 10.00
#define overtime_hours 40
#define max_hours 60
#define max_pay 99
string namestring(string first, string last, string full);
Я пытаюсь передать этот модуль для моего основного
string namestring(string first, string last, string full)
{
//input name
cout << "What is your first name? " << endl;
cout << "first name: " << endl;
cin >> first;
cout << "What is your last name? " << endl;
cout << "last name: " << endl;
cin >> last;
//process name
full = last + " " + first;
return full;
}
Называя это как так
namestring(first, last, full);
Где я ожидаю, что полное имя пользователя, которое будет отображаться ниже
cout << left << fixed << " " << "Reg." << " " << " Ovt." << " Hourly" << " Net" << " " << " Gross" << endl;
cout << left << fixed << setprecision(2) << setw(10) << "Name " << " Hours" << " Hours" << " Rate" << " Pay" << " Taxes" << " Deduct" << " Pay" << endl;
cout << left << fixed << setprecision(2) << setw(10) << "====================" << " " << "=====" << " " << "=====" << " " << "=====" << " " << "======" << " " << "======" << " " << " " << "========" << " " << "=======" << endl;
cout << left << setprecision(2) << setw(20) << full << right << " " << right << setw(4) << hours << right << " " << right << overtime << " " << right << pay << " " << right << net_pay << " " << right << taxs << " " << right << parking_deductions << " " << right << gross_pay << right << endl;
cout << endl;
cout << endl;
Здесь недостаточно кода, чтобы узнать, в чем проблема. Предполагая, что вы вызываете 'cout << namestring (« Dr »,« Z »,« ») << endl;' он будет работать нормально; однако, если вы пытаетесь использовать параметр, переданный в 'namestring', это не будет. Пожалуйста, отредактируйте свой вопрос, чтобы включить соответствующий код вызова, а также позвоните здесь: a ** [mcve] ** – Tas
Пожалуйста, также вызовите вызов функции. Тогда мы сможем выяснить проблему. –
Ваш код не проверяет, действительно ли входы работают. Кроме того, не используйте 'std :: endl', если вам действительно не нужно очищать поток: в коде выше поток будет автоматически очищаться при использовании' std :: cin' ('std :: cout' is' tie () 'd в' std :: cin'). –