Если вы можете использовать std::string
, это намного чище. Вот программа, которая это делает:
#include <iostream>
using namespace std;
void int_time_to_string(const int int_time, string& string_time);
int main() {
int clockMin = 0;
int clockSec = 15;
string clockMinString;
string clockSecString;
int_time_to_string(clockMin, clockMinString);
int_time_to_string(clockSec, clockSecString);
string clockString = clockMinString + ":" + clockSecString;
cout << "clock = " << clockString << endl;
return 0;
}
// Convert a time in int to char*, and pad with a 0 if there's only one digit
void int_time_to_string(const int int_time, string& string_time) {
if (int_time < 10) {
// Only one digit, pad with a 0
string_time = "0" + to_string(int_time);
} else {
// Two digits, it's already OK
string_time = to_string(int_time);
}
}
Если, с другой стороны, вы не можете использовать std::string
, вам придется прибегнуть к строкам C, то есть к массивам символов. Я довольно заржавел в этом, но я думаю, что мы можем использовать sprintf
для преобразования и strcpy
/strcat
для работы с некоторыми низкоуровневыми операциями (например, поставить '\ 0' в конце).
#include <iostream>
#include <cstring>
using namespace std;
void int_time_to_string(const int int_time, char* string_time);
int main() {
int clockMin = 0;
int clockSec = 15;
char clockMinString[3] = ""; // 2 digits + null character
char clockSecString[3] = ""; // 2 digits + null character
int_time_to_string(clockMin, clockMinString);
int_time_to_string(clockSec, clockSecString);
char clockString[6]; // 2 digits, colon, 2 more digits, null character
strcpy(clockString, clockMinString);
strcat(clockString, ":");
strcat(clockString, clockSecString);
cout << "clock = " << clockString << endl;
return 0;
}
// Convert a time in int to char*, and pad with a 0 if there's only one digit
void int_time_to_string(const int int_time, char* string_time) {
if (int_time < 10) {
// Only one digit, pad with a 0
strcpy(string_time, "0") ;
char temp[2]; // 1 digit + null character
sprintf(temp, "%d", int_time);
strcat(string_time, temp);
} else {
// Two digits, it's already OK
sprintf(string_time, "%d", int_time);
}
}
В обоих случаях вам просто нужно взять clockString
.
person
Fabio says Reinstate Monica
schedule
12.05.2015
std::string
вместо массивовchar
. Не могли бы вы использоватьstd::string
? - person Fabio says Reinstate Monica   schedule 13.05.2015