admin 发表于 2024-10-3 17:15:04

CString输出文本对齐处理

int HasChineseChar(const CString& str)
{
    CString content;
    int count = 0;
    for (int i = 0; i < str.GetLength(); i++)
    {
      if (str.GetAt(i) > 255)
      {
            content += str.GetAt(i);
            count++;
      }
    }
    return count;
}

void CMFCApplication1Dlg::OutputLDCaseCoe()
{
    CStdioFileEx file;
    if (!file.Open(_T("LDCaseCoe.txt"), CFile::modeCreate | CFile::modeWrite | CStdioFileEx::modeWriteUnicode, nullptr))
      return;
    file.WriteString(_T("-------------荷载组合分项系数-------------\n"));
    std::vector<CString> LDCaseStrVec;
    LDCaseStrVec.push_back(_T("DL"));
    LDCaseStrVec.push_back(_T("地面堆载"));
    LDCaseStrVec.push_back(_T("覆土荷载"));
    LDCaseStrVec.push_back(_T("侧向土压力(低)"));
    LDCaseStrVec.push_back(_T("水压力(低)"));
    LDCaseStrVec.push_back(_T("侧向土压力(常)"));
    LDCaseStrVec.push_back(_T("LL[专用]"));
    LDCaseStrVec.push_back(_T("LL1"));
    LDCaseStrVec.push_back(_T("LL2"));
    LDCaseStrVec.push_back(_T("水浮力"));
    LDCaseStrVec.push_back(_T("EX"));
    LDCaseStrVec.push_back(_T("EY"));
    LDCaseStrVec.push_back(_T("SOIL"));
    //随机数
    std::default_random_engine e;
    std::uniform_real_distribution<double> u(0, 1);
    e.seed(10);

    std::vector<int> spaceLengthVec;
    CString str;
    for (size_t i = 0; i < LDCaseStrVec.size(); i++)
    {
      CString stemp = LDCaseStrVec;
      CString result;
      result.Format(_T("   %s"), stemp);
      str += result;
      int count = HasChineseChar(result);
      int length = result.GetLength();
      if (count > 0)
            length += count;
      spaceLengthVec.push_back(length);
    }
    str += _T("\n");
    file.WriteString(str);

    str = _T("");
    for (int i = 0; i < 10; i++)
    {
      for (size_t j = 0; j < LDCaseStrVec.size(); j++)
      {
            CString temp;
            temp.Format(_T("%%%d.2f"), spaceLengthVec);
            CString result;
            double randomValue = u(e);
            result.Format(temp, randomValue);
            str += result;
      }
      str += _T("\n");
      file.WriteString(str);
    }
    file.Close();
}
页: [1]
查看完整版本: CString输出文本对齐处理