【发布时间】:2023-01-31 00:45:12
【问题描述】:
大家好,这里是我关心的问题,它涉及带有 Qt 的 C++:
我的项目的一部分是从包含名称的 txt 文件中显示随机行,我制作了第一个程序来执行此操作并且它运行完美,就在这里(这里定义了随机数)。
std::ifstream file("noms.txt");
std::string line;
std::string response_string = "452";
int randomLine = std::stoi(response_string);
for (int i = 0; i <= randomLine; i++) {
std::getline(file, line);}
std::cout << line;
但是当我的程序完成时执行此代码时(这里是相关部分)
std::ifstream file("noms.txt");
std::string line;
int randomLine = std::stoi(response_string);
for (int i = 0; i <= randomLine; i++) {
std::getline(file, line);}
QString qstringLine = QString::fromStdString(line);
nom->setText(qstringLine);
在这里,当我在标签“name”中放入一些值时,它会显示出来,但是当我放入 txt 行时,它不起作用(这里,response_string 变量是一个来自 api 的字符(但是一个数字) )
你有什么想法吗?
我已经尝试过不将该行转换为 QString,我已经尝试只显示 api 的结果(有效),我认为问题出在读取该行和显示之间。我还尝试更新小部件。
【问题讨论】:
-
没有足够的数据。它可能是多字节字符串吗? Qt 不处理转换,除非您在这种情况下设置编解码器。
-
i <= randomLine<= 会导致它多读 1 行。因此,如果randomLine是 2,则期望它打印文件的第 3 行。