1

「入力文字列の形式が正しくありませんでした」というエラーが表示されます

このコードは、C# で使用すると正常に動作しますが、自分で翻訳したため、エラーが発生する可能性があります。(短くて速いので、通常はこれをテキスト暗号化に使用します)

これは私のC++コードです:

void encrypt()
{
    string psw = "mystring";
    System::String^ encr;
    int tot;
    int num;
    int lng = psw.size();
    char pswchar[1024];
    strcpy_s(pswchar, psw.c_str());
    System::String^ istr;
    for (int i = 0; i < lng; i++)
    {
        {
            ostringstream ss;
            ss << pswchar[i];
            istr = gcnew System::String(ss.str().c_str());
        }
        num = int::Parse(istr) + 15; // << I get the error here
        tot += num;
    }
    ostringstream convert;
    convert << tot;
    encr = gcnew  System::String(convert.str().c_str());
    File::WriteAllText("C:\myfolder\mypath.txt", encr);
}

これは私のC#コードです:

void encrypt()
{
    string psw = "mystring";
    string encr;
    char[] pswchar = psw.ToCharArray();
    for (int i = 0; i < pswchar.Length; i++)
    {
        int num = Convert.ToInt32(pswchar[i]) + 15;
        string cvrt = Convert.ToChar(num).ToString();
        encr += cvrt;
    }
}
4

1 に答える 1

2

これはあなたが求めたものだと思います...しかし、それは少しクレイジーです:

#include <string>

using namespace System;

std::string encrypt(const std::string& s) {
  std::string r(s);
  for (int i = 0; i < r.size() ; ++i) {
    r[i] += 15; // !!!
  }
  return r;
}

int main(array<System::String ^> ^args)
{
    std::string s = "Hello World";
    System::String^ ss = gcnew String(encrypt(s).c_str());
    Console::WriteLine(ss);
    return 0;
}

出力:

Wt{{~/f~?{s
于 2013-10-01T14:22:36.177 に答える