質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

解決済

1回答

19826閲覧

配列の値をテキストファイルに保存したい

fender0131

総合スコア121

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

1クリップ

投稿2015/10/05 04:38

編集2015/10/05 05:12

VisualStdio2013 C# windowsフォームアプリケーションでプログラムを組んでいます。

point[1]={X=250, Y=391.4214}
point[2]={X=320.7107, Y=462.132}
・・・
point[10]={X=257.0711, Y=384.3503}

といった、X・Y座標がpoint配列に格納されています。

これを以下のプログラムでテキストファイルに落としました。

StreamWriter sw = new System.IO.StreamWriter(
@"C:\data\test.txt",
false,
System.Text.Encoding.GetEncoding("shift_jis") );

for (int i = 0; i < 10 i++)
{
sw.WriteLine(point[i]);
}
sw.Close();

落としたファイルを見ると、以下の通りでした。

●test.txt =======================
{X=250, Y=391.4214}
{X=320.7107, Y=462.132}
・・・
{X=257.0711, Y=384.3503}

これを数値のみ取り出して、小数点を四捨五入し、以下のような形式でデータを落としたいのですが、可能でしょうか?
どなたかご教授頂けないでしょうか。

●理想 test.txt =====================
250 391
321 462
257 384

※ 追記1

public PointF[] point;

public float[] x;
public float[] y;

・・・

point[i] = new PointF(x[i], y[i]);

といった形でpoint座標に値を書き込んでおります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daichan

2015/10/05 04:42

こんにちは。 すごい細かいですけど、「320.7107」を四捨五入すると「321」ですよね。
fender0131

2015/10/05 04:46

お答えありがとうございます。 修正させて頂きました。
Tak1wa

2015/10/05 04:58

point配列の現在の型はなんですか?
fender0131

2015/10/05 05:09 編集

public PointF[] point; public float[] x; public float[] y; ・・・ point[i] = new PointF(x[i], y[i]); といった形でpoint座標に値を書き込んでおります。
fender0131

2015/10/05 05:13 編集

本文にpoint配列の現在の型についてご説明追加させて頂きました。
guest

回答1

0

ベストアンサー

こんにちは。

以下ですかね。

C#

1PointF[] point = new PointF[3]; 2point[0] = new PointF(250f, 391.4214f); 3point[1] = new PointF(320.7107f, 462.132f); 4point[2] = new PointF(257.0711f, 384.3503f); 5 6using(StreamWriter sw = new StreamWriter( 7 @"C:\data\test.txt", 8 false, 9 System.Text.Encoding.GetEncoding("shift_jis"))) 10{ 11 foreach(PointF current in point) 12 { 13 Point hoge = Point.Round(current); 14 sw.WriteLine(String.Format("{0} {1}", hoge.X, hoge.Y)); 15 } 16}

ポイントは二つです。
0. Point.Roundを使ってPointF→Pointへ整数丸めで変換をかける。
0. WriteLine時にフォーマットを指定する。

投稿2015/10/05 05:29

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fender0131

2015/10/05 06:05

いつもお世話になっております。 思い通りにテキストファイルに落とすことができました。 大変参考になりました。 ありがとうございます。 ● Point.Round 指定された Point の値を最も近い整数に丸めることで、その PointF を Point オブジェクトに変換します。 https://msdn.microsoft.com/ja-jp/library/vstudio/system.drawing.point.round%28v=vs.100%29.aspx?f=255&MSPPError=-2147217396 ●string.Format 指定された形式に基づいてオブジェクトの値を文字列に変換し、別の文字列に挿入します。 https://msdn.microsoft.com/ja-jp/library/system.string.format(v=vs.110).aspx
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問