IPアドレスに値を入れる方法

[戻る]
にゃも 2005/05/24(火) 15:32:16
こんにちわ。

CString型で持っている値(例:"111.0.0.0")を、
CIPAddressCtrlのSetAddress()を使ってIPアドレスとして表示したいのですが、
うまくいきません。


何かいい方法はないでしょうか?
ご教授お願いします。

επιστημη 2005/05/24(火) 15:55:28
'うまくいきません'を説明してください。

'.'で区切って4つの数字列とし、それぞれを数値に変換して
SetAddressに与えるだけではないかと。

にゃも 2005/05/24(火) 16:51:08
[[解決]]
言葉足らずですいませんでした。
うまくいかない、とは、
文字列を4つに分けて、それを数値に変換する、
というのがうまく出来なかったんです。

一応、不恰好ではありますが、

CString a = m_str.Left(m_str.Find('.',0));
m_str.Delete(0,(m_str.Find('.',0)+1));
CString b = m_str.Left(m_str.Find('.',0));
m_str.Delete(0,(m_str.Find('.',0)+1));
CString c = m_str.Left(m_str.Find('.',0));
m_str.Delete(0,(m_str.Find('.',0)+1));
CString d = m_str;

とし、それぞれatoi()を使用して数値に変換するようにしました。

ありがとうございました。

Blue 2005/05/24(火) 16:58:15
入力が必ずIPアドレスの形式であるという前提ならば
sscanfが有効です。

CString::Findは検索開始位置を指定できるのでいちいちDeleteする必要がなくなりま
す。

dairygoods 2005/05/24(火) 17:09:27
inet_addr()が簡単では。

in_addr a;
a.s_addr = inet_addr(m_str);
m_ipactrl.SetAddress(a.s_net, a.s_host, a.lh, a.impno);

古いスレッドには追加発言できません。