• ベストアンサー

文字列の加算

OS  :WindowsXP Pro SP1 開発環境:VisualStudio .NET 2003 開発言語:C# 開発形態:Windowsアプリケーション プログラミング初心者です。どうかよろしくお願い致します。 現在、あるアプリケーションを作成しております。 その中で、数値の入った文字列を受け取り、それを全て加算しようとしております。 例えば、 引数の文字列が"123456789"だとしたら、そのメソッド内で1+2+3+4+5+6+7+8+9を計算し、答えを返却値とする。 私は文字列をint型にキャストして計算しようと思ったのですが、うまくキャストできません。string型はint型にキャストできないのでしょうか? また他に文字列の数値の加算をする方法がありましたら、どなたかご教授お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#14464
noname#14464
回答No.2

 一桁ごとの加算…ということでよろしいですね? それならば、int.Parseしただけでは1億2345万6789になってしまいます。 複雑な話しですが、 foreachで一文字ずつまわし、あらかじめ用意した整数に足しあわせていく…という流れになるでしょうか。 string str = "123456789"; int n = 0; foreach(char c in str) {  n += int.Parse("" + c); } MessageBox.Show(n.ToString()); と言う感じで。

tora0125
質問者

お礼

返事が遅くなり大変申し訳ございません。 ご回答ありがとうございました。 TakamiChie様のご回答を参考にし、思い通りの処理ができました。 本当にありがとうございました。

その他の回答 (3)

  • rot-N
  • ベストアンサー率27% (118/432)
回答No.4

文字列と言っても1文字づつの文字の配列なんでs[]="123456"は、s[0]='1'、s[2]='2'・・・です。 で、「v=(*s++)-'0';」でi番目の文字を数値に出来ます。 これと、文字列の最期は'\0'と言うことを使えば、プログラムは出来ますね。 これ以上は、貴方のためにならないので書きません。

tora0125
質問者

お礼

返事が遅くなり大変申し訳ありません。 ご回答ありがとうございました。 rot-N様の処理方法は他の方々と少し違うみたいですね。こちらの方法でも実装可能ということですよね。rot-N様の方法でも実装してみたいと思います。 アドバイスありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

using System; public class stringNumbersSum { public static void Main() { String str = "123456789"; double sum=0; foreach(char c in str){ sum += Char.GetNumericValue(c); } // 表示 Console.Write( "{0}",sum); } }

tora0125
質問者

お礼

返事が遅くなり大変申し訳ございません。 ご回答ありがとうございました。 BLUEPIXY様には以前にもご回答を戴きました。いつもありがとうございます。 BLUEPIXY様のアドバイスを参考に、思い通りの処理ができました。本当にありがとうございました。 これから、プログラミングの勉強に励みたいと思います。

  • ken5725
  • ベストアンサー率24% (10/41)
回答No.1

これでできると思います string str = "1"; int i; i = System.Int32.Parse(str);

tora0125
質問者

お礼

返事が遅くなり、大変申し訳ありません。 ご回答ありがとうございました。 おかげさまで、思い通りの処理ができました。 ありがとうございました。

関連するQ&A

  • Informixで文字列を数値型に

    こんにちは。 当方、Linux7.3+アプリケーション(DB:Informix)を使用しています。 文字列を数値に変換するSQLに悩まされています。 内容 01/01/08からなる文字列と20080101と手動入力される数値を比較する事が最終目標です。 当方が試みている方向は、 01/01/08をSUBSTRING()で20080101に成型し、数値比較をしたい、と思っています。 SUBSTRING()で、文字列型で20080101までできるのですが、数値型にCASTが出来ません。 検討した関数は、下記の通りですが、構文エラーとなり、実装できません。 お助け下さい。 CAST(20080101) as INTEGER TO_NUMBER(20080101) INT(20080101) CONVERT(20080101)

  • 文字列の数字部分を取り出す関数・メソッド

    こんにちは。 ある文字列から、数値部分を取り出す関数やメソッドは存在するのでしょうか? たとえば、  引数:"abc123"→戻り値:123  引数:"a1b2c3"→戻り値:1 ※はじめに見つかった数値 という感じです。 無いのであれば、自作しようと考えているのですが…。

  • boost::lexical_castで16進数文字列を数値に変換する

    boost::lexical_castで16進数文字列を数値に変換する 次のコードで試しましたが実行時例外になります。 16進数文字列をlexical_castで扱う方法を教えてください。 #include <boost/lexical_cast.hpp> string ss = "0x1234"; int n = boost::lexical_cast<int>(ss); よろしくお願いします。

  • CreateProcessのコマンド・ライン文字列

    ■開発環境:VisualStudio2005 VC++ CreateProcessの第2引数についての質問なのですが、 第二引数は実行するコマンドライン文字列となりますが、この引数のサイズがある一定のサイズを超えるとCreateProcessの実行でエラーになります。 その場合のGetLastError()の番号は87=ERROR_INVALID_PARAMETERです。 どうも、CreateProcessの第2引数のサイズに上限があるように思います。 どなたこのあたりの情報を持っておられる方いますでしょうか? 以上、ご教授よろしくお願いします。

  • 数値を文字列に変換する方法

    int rssi_dec = Convert::ToInt32("0X" + test02, 16); -----------(中略)----------------------- 一度、文字列だったものを数値に変換して、中略部分で計算をして、もう一度数値をHEXの 文字列に変換して、 String^ test このtestの中に代入したいと思っているのですが、どのようにすればよいのでしょうか? どうぞ、ご教授よろしくお願い致します。

  • PythonでDLLからの戻り値で文字列の場合を正しく表示させたい

    VisualStudio2005でDLLを作成して、Python2.6のctypesモジュールを使って、PythonからC++のルーチンを呼び出す際に、文字列を引数として、文字列を戻り値として使えるようにC++を記述したいのですがどうすればよいのでしょうか? 関数呼び出しは __stdcallです。 __declspec(dllexport) unsigned char* __stdcall Test(const char *s, int n); とした場合、Pythonで戻り値を見るとint型の数値でした。 from ctypes import * lib = windll.LoadLibrary("test.dll") s = lib.Test("abcdefghijk", 3) print s

  • 文字列の動的な結合

    C♯、.net frameworkdは2.0の環境です。 メソッドでSQL用の文字列を作っています。 引数によって、JOINするテーブルを変えたいのですが、StringBuilderではなく、 単なるStringの変数を、ひたすら + で結合している状態なので、悩んでいます。 String sql; sql = " select " + " tbl.column1 " + " from " + … こんな感じです。 StringBuilderで作り直したいのですが、諸事情により難しいので、+での文字列結合をしつつ、 ところどころ、引数を見て文字列を結合したりしなかったり…ということをスムーズにできる 方法はないでしょうか?

  • (String)nullはnullではなく文字列?

    引数として、(String)nullを渡しているコードがあるのですが、 これは「null」ではなく文字列としての「null」を渡しているのでしょうか? ・Stringでキャストしていると思うのですが、nullもキャストできるのでしょうか? ・それとも何か特別な意味がある?

    • ベストアンサー
    • Java
  • C#でのDLL

    OS  :WindowsXP Pro SP1 開発環境:VisualStudio .NET 2003 開発言語:C# 開発形態:Windowsアプリケーション 開発初心者です。よろしくお願い致します。 テキストファイルを読み込んで、その中にある文字列を3つほど返却値として返すDLLを作成したいと思っています。 新規にクラスライブラリのテンプレートでプロジェクトを作成し、プロジェクトメニューからコンポーネントの追加をしました。 質問事項 1.まず、DLLを作成する手順として、上記の方法でよろしいのでしょうか? 2.ファイルからテキストを取得するところまではできるのですが、それを返却値として、呼び出し元の別プロジェクトへは、どうすればよいのでしょうか? どなたか、ご教授お願い致します。

  • 文字列を用いてExcel関数を呼び出したい

    C#にてExcel用のアドインを作成しています。 そのアドインは、独自の関数の挿入画面を表示し、こちらが用意したVBAの関数を呼び出してデータベースにアクセスする動きです。 この独自の関数の挿入画面上で引数にSUM()などのExcel関数を入力された場合、Excel標準の関数の挿入画面と同じように、 入力された関数の計算結果を右側に表示するような作りにしたいのです。 当初は独自の関数の挿入画面で引数に「SUM(B1:B10)+AVERAGE(C1:C5)」と入力されれば、その文字列を解析してどの関数が呼ばれているか抽出し、 Application.WorksheetFunction内のメソッドを呼び出そうかと考えたのですが、 作業量が多い上に自分の技術力が無いのでバグが発生する可能性が高く信頼に値しないということで、断念しました。 受け取った文字列をそのまま用いてWorksheetFunctionのメソッドを呼び出し、結果を受け取るということは可能でしょうか?

専門家に質問してみよう