0

小さな数独プログラムを作成しました。特定のボタンを押すたびに、そのボタンのテキストが前の数字に 1 ずつ加算されるようにしたいと考えています。

たとえば、「1」という大きなボタンがあり、それをクリックすると、「2」と表示され、もう一度クリックすると「3」と表示され、「9」まで続きます。

最初はかなり単純だと思っていました。このコードを使用して、ボタンのテキストに等しい文字列である 9 まで数えられる整数を呼び出し、次に int を文字列に変換しようとしましたが、失敗しました。次のエラーが表示されました。これはコードです:

int s = 0;
String^ mystr = a0->Text;
std::stringstream out;
out << s;
s = out.str(); //this is the error apparently.
s++;

そして、これはエラーです:

エラー C2440: '=': 'std::basic_string<_Elem,_Traits,_Ax>' から 'int' に変換できません

MSDN でそのエラーを検索してみましたが、私のものとは異なり、ページを入力したときよりも混乱してしまいました。

また、参考までに、Windows XP の Visual Studio 2010 C++ で Windows フォーム アプリケーションを使用しています。

4

4 に答える 4

3

を使用してstd::stringまたはchar*に変換する場合は、次のようになります。intstd::stringstream

int s = 0;
std::string myStr("7");
std::stringstream out;
out << myStr;
out >> s;

または、同じ結果が得られる which をstringstream使用して、これを直接構築できます。myStr

std::stringstream out(myStr);
out >> s;

に変換する場合は、次System::String^std::stringようになります。

#include <msclr\marshal_cppstd.h>
...
System::String^ clrString = "7";
std::string myStr = msclr::interop::marshal_as<std::string>(clrString);

ただし、Ben Voigtが指摘しているようにSystem::String^、.NET Framework の関数を使用して変換する必要があります。次のようにもなります。

System::String^ clrString = "7";
int i = System::Int32::Parse(clrString);
于 2012-04-20T16:28:14.030 に答える
2

から始めているのでString^、次のようなものが必要です。

int i;
if (System::Int32::TryParse(a0->Text, i)) {
    ++i;
    a0->Text = i.ToString();
}
于 2012-04-20T21:57:40.727 に答える
0

sはタイプintです。str()を返しますstring。文字列をintに割り当てることはできません。別の変数を使用して文字列を格納します。

考えられるコードは次のとおりです(コンパイルされませんが)

string text = GetButtonText(); //get button text
stringstream ss (text); //create stringstream based on that
int s; 
ss >> s; //format string as int and store into s
++s; //increment
ss << s; //store back into stringstream
text = ss.str(); //get string of that
SetButtonText (text); //set button text to the string
于 2012-04-20T16:21:17.853 に答える
0

C++ で文字列を int に変換する方法はたくさんあります。最新のイディオムは、ブースト ライブラリをインストールして、boost::lexical_cast を使用することです。

しかし、あなたの質問は、あなたが C++ をよく理解していないことを示しています。あなたの努力のポイントが C++ についてさらに学ぶことである場合は、数独のような複雑なことを試す前に、多くの簡単なチュートリアルの 1 つを試してみることをお勧めします。

Windows フォームで数独を作成したいだけなら、C++ をやめて C# や VB.Net に目を向けることをお勧めします。

于 2012-04-20T16:30:06.680 に答える