簡體   English   中英

從QString獲取ASCII值並將其替換為其他ASCII

[英]Get ASCII value from QString and replace it with other ASCII

我需要從每個QString的元素中獲取ASCII值,然后將其替換為其他ASCII。 我有這些QString: QString s = ui->lineEdit_3->text(); QString k = ui->lineEdit_2->text(); ,然后將s轉換為Latin1 s.at(i).toLatin1(); 但是當我打印f ,什么也沒發生。
這是我的代碼:

QString s = ui->lineEdit_3->text();
QString k = ui->lineEdit_2->text();
QString f;
k.toInt();
s.toStdString();


for(int i; i<=s.length(); i++)
{
    f.append(QChar(s.at(i).toLatin1()+k.toInt()));
}

ui->lineEdit->setText(f);

先感謝您!

下面的示例演示了一種解決方案。 偏移控件確定字符代碼與原始值的偏移量。 不必轉換為ASCII:Unicode代碼點對應於ASCII的兩個范圍重疊(即32到127,包括端點)的點。 模數可打印ASCII范圍”選項通過對范圍進行加模(即,將結果包裝以適合該范圍),將結果保持在可打印ASCII范圍內。

截圖

// https://github.com/KubaO/stackoverflown/tree/master/questions/ascii-add-ui-51639347
#include <QtWidgets>

int main(int argc, char *argv[]) {
   QApplication a(argc, argv);
   QWidget ui;
   QFormLayout layout(&ui);
   QLineEdit input("Hello, World!");
   QLabel output;
   QLineEdit offset;
   QIntValidator offsetValidator(-65535, 65535);
   QCheckBox ascii("Modulo printable ASCII range 32-127");
   output.setFrameShape(QFrame::Panel);
   layout.addRow("Input Text", &input);
   layout.addRow("Output", &output);
   layout.addRow("Offset", &offset);
   layout.addRow(&ascii);
   layout.setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
   offset.setValidator(&offsetValidator);
   offset.setPlaceholderText("0");
   ascii.setChecked(true);
   ui.show();

   auto const calculate = [&] {
      bool limit = ascii.isChecked();
      auto text = input.text();
      int delta = offset.text().toInt();
      for (QChar &ch : text) {
         auto doLimit = limit && ch >= 32 && ch <= 127;
         ch = {ch.unicode() + delta};
         if (doLimit) ch = {((ch.unicode() - 32) % (128 - 32)) + 32};
      }
      output.setText(text);
   };
   for (auto ed : {&input, &offset})
      QObject::connect(ed, &QLineEdit::textChanged, calculate);
   QObject::connect(&ascii, &QCheckBox::toggled, calculate);

   offset.setText("1");
   return a.exec();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM