Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;将结构中的字符串保存到文本文件中_C++_Arrays_String_File - Fatal编程技术网

C++ C++;将结构中的字符串保存到文本文件中

C++ C++;将结构中的字符串保存到文本文件中,c++,arrays,string,file,C++,Arrays,String,File,在我的程序中,我有一个时钟计时器,我需要将它保存到一个字符数组[10],然后将其实现到我的highscore函数中。通过我的程序,我已经有了一个格式化的时间。例如,如果时钟的秒数小于10,我必须加一个零。所以,0:02,如果时钟的秒数大于10,它将保持正常。我不需要在结构中使用两个int变量,如何将字符串写入文本文件?例如,让我们编写一个名为string clocksTime=“0:15”的字符串。注意,它已经格式化。这是我的密码: struct highscore { // *Want

在我的程序中,我有一个时钟计时器,我需要将它保存到一个字符数组[10],然后将其实现到我的highscore函数中。通过我的程序,我已经有了一个格式化的时间。例如,如果时钟的秒数小于10,我必须加一个零。所以,0:02,如果时钟的秒数大于10,它将保持正常。我不需要在结构中使用两个int变量,如何将字符串写入文本文件?例如,让我们编写一个名为string clocksTime=“0:15”的字符串。注意,它已经格式化。这是我的密码:

struct highscore
{
    // *Want* Change these two int values to a string
    int clockMin;
    int clockSec;
}; 
...[Code]…
// Change the two variables to have it instead, data[playerScore].clock = clocksTime
data[playerScore].clockMin = clockData.minutes;
data[playerScore].clockSec = clockData.seconds;
_strdate(data[playerScore].Date);

// Write the variables into the text file
streaming = fopen( "Highscores.dat", "wb" );
fwrite( data, sizeof(data), 1 , streaming); 

如果你能使用
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);
    }
}

在这两种情况下,您只需使用
clockString

为什么不按原样保存结构?如果必须再次加载该文件,那么将其加载到同一个结构中不是很好吗?让数据成为数据,演示成为演示。fprintf有什么问题,或者,如果您真的希望它是字符串,那么snprintf有什么问题?还是C++ iStrass/String String?使用<代码> STD::String < /C> >而不是代码> char < /C> >数组,这将变得更容易。您是否可以使用
std::string
?@FabioTurati,唯一的问题是当我使用string时,会出现错误。
#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);
    }
}