字符串数组中的值将被覆盖,而不会被完全替换

The value in the string array is overwritten and not completely replaced

本文关键字:替换 覆盖 数组 字符串      更新时间:2024-09-22

当我执行;consoleinfo(("函数两次,第一个文本比第二个长,数组中的值与第一个重叠

这是我的代码:

string last[20];
void consoleinfo(string log)
{
arrayshift();
last[18] = "[INFO] " + log;
consolerefresh();
}

移位所有值:

void arrayshift()
{
for (int i = 1; i < (sizeof(last) / sizeof(last[0])); i++)
{
last[i - 1] = last[i];
}
}

打印上一次的所有值:

void consolerefresh()
{
for (int i = 0; i < (sizeof(last) / sizeof(last[0])); i++)
{
std::cout << last[i] << std::endl;
}
}

我的输入:

consoleinfo("Hello World!");
consoleinfo("Apple");

输出:

[INFO] Hello World!
[INFO] Apple World!

IMHO这里有一个拼写错误last[18] = "[INFO] " + log;,必须是last[19] = "[INFO] " + log;

当你第一次输入时,你会进入控制台

[INFO]你好,世界!

当您第二次键入时,最后一行将在上一行输出的同一位置输出,单词Hello将用单词Apple重写。

[信息]苹果世界!

您必须在输出前清理控制台,或者在最后一个文本中填充空格,直到控制台宽度或上一行宽度。若你们用的单词比"你好"长或短,那个就很明显了。

last[18] = "[INFO] " + log;
if (last[17].length() > last[18].length())
last[18] += std::string(last[17].length() - last[18].length(), ' ');