用户信息存在文本中,该文本以userName,userID,password,imagePath,friendNameList的方式存储(friendName之间用;分开)例如 张三,12345678,password,:/images/portrait/default.jpg,李四;小王 李四,23456789,hello,:/images/portrait/head4.jpg,张三 小王,34567890,world,:/images/portrait/head5.jpg,张三 小李,45678901,cplus,:/images/portrait/head6.jpg 请你写一个函数修改用户的昵称,思路是,先找到要改昵称的用户,把旧昵称记录下来,修改用户的昵称,改完之后重新打开文件,查找所有用户的好友昵称列表,把好有的旧昵称改成新昵称。 例如修改张三的昵称为小张,不仅要将第一行里张三改为小张,还要将李四,小王的好友昵称列表的张三改为小张,即文件信息变成 小张,12345678,password,:/images/portrait/default.jpg,李四;小王 李四,23456789,hello,:/images/portrait/head4.jpg,小张 小王,34567890,world,:/images/portrait/head5.jpg,小张 小李,45678901,cplus,:/images/portrait/head6.jpg bool AccountInfo::resetNickname(const QString &userID, const QString &newNickName) { } 用QT编写在以上函数中
时间: 2024-04-17 13:24:58 浏览: 202
Django框架使用富文本编辑器Uedit的方法分析
您可以使用以下代码来实现修改用户昵称的功能:
```cpp
bool AccountInfo::resetNickname(const QString &userID, const QString &newNickName)
{
QFile file("userInfo.txt"); // 更改为您的用户信息文件路径
if (!file.open(QIODevice::ReadWrite | QIODevice::Text))
{
qDebug() << "Failed to open file.";
return false;
}
QTextStream stream(&file);
QStringList lines;
while (!stream.atEnd())
{
QString line = stream.readLine();
QStringList userInfo = line.split(',');
if (userInfo[1] == userID)
{
QString oldNickName = userInfo[0];
userInfo[0] = newNickName;
line = userInfo.join(',');
// Update the user's nickname in the current line
stream.seek(stream.pos() - line.length() - 2); // Skip the '\n' character at the end
stream << line;
stream.flush();
// Update the user's nickname in the friend name lists
QStringList friendNameList = userInfo[4].split(';');
for (int i = 0; i < friendNameList.size(); i++)
{
QString friendName = friendNameList[i];
if (friendName == oldNickName)
{
friendNameList[i] = newNickName;
}
}
userInfo[4] = friendNameList.join(';');
line = userInfo.join(',');
// Update the user's friend name list in subsequent lines
while (!stream.atEnd())
{
QString nextLine = stream.readLine();
QStringList nextUserInfo = nextLine.split(',');
QStringList nextFriendNameList = nextUserInfo[4].split(';');
for (int i = 0; i < nextFriendNameList.size(); i++)
{
QString nextFriendName = nextFriendNameList[i];
if (nextFriendName == oldNickName)
{
nextFriendNameList[i] = newNickName;
}
}
nextUserInfo[4] = nextFriendNameList.join(';');
nextLine = nextUserInfo.join(',');
stream.seek(stream.pos() - nextLine.length() - 2);
stream << nextLine;
stream.flush();
}
file.close();
return true;
}
lines.append(line);
}
file.close();
qDebug() << "User ID not found.";
return false;
}
```
请注意,您需要将代码中的`"userInfo.txt"`更改为您实际使用的用户信息文件的路径。此函数将首先查找要更改昵称的用户,然后更新该用户的昵称和其好友名单中的昵称。
阅读全文