如果你可以使用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
。
为什么不直接保存结构?如果你不得不再次加载文件,那么你可以把它加载到同一个结构体中不是很好吗?让数据成为数据和演示文稿。 – Mads
fprintf有什么问题,或者,如果你确实需要一个字符串,snprintf?或者C++ iostreams/stringstream? – Sebastian
使用'std :: string'而不是'char'数组更容易。你可以使用'std :: string'吗? –