SOGO論壇
標題:
C++輸入字串的問題
[列印本頁]
作者:
jeff159
時間:
2011-1-29 12:24:12
標題:
C++輸入字串的問題
首先我是用char arri[39] 宣告一個空的儲存格總共要用39個位置來輸入IPV6的儲存格
問題一:接著我的程式要輸入IPV6的位置 EDEC:BA98:0074:3210:000F:BBFF:0000:FFFF
要怎麼去輸入?除了iostream還需要引用什麼標頭擋?
問題二:IPV6有一個簡化規則,那我輸入成功以後我要怎麼用程式去判斷那些簡化規則?
例如上面那段IP 我要怎麼檢察0000變成0而已?
如果是EDEC:BA98:0074:3210:0000:0000:0000:FFFF
簡化的過程是先把4個0的變成1個0→EDEC:BA98:0074:3210:0:0:0:FFFF
接著把中間的一串0簡化成兩個冒號→EDEC:BA98:0074:3210::FFFF
這樣要怎麼用code表示?
我只要部分程式碼就好
最主要是我這一段不知道怎麼表示
如果有高手可以讓我問的話也可以用短信跟我講msn或即時通..
作者:
zx780411
時間:
2011-7-12 00:28:43
第一個問題:
我比較少用C++但是我自己在寫C的時候只要用到這一類型陣列存值我都還會include string.h這類的函式庫 這邊提供給你網這方面去找找
第2個問題:
因為你現在格式式固定的 所以你可以直接用位置去求值 例如 EDEC:BA98:0074:3210:000F:BBFF:0000:FFFF
這段IP中的arri[30]~arri[33]昰一組 那將每個字元取出來轉換成對應的數值(例如atoi(arri[30]) 像C語言中有atoi這類的指令可以使用) 如果是其它 英文字母的就得自己寫個function將他從16進位轉回10進位再運算了 不過看樣子你似乎只是要處理0000這種特殊的情況所以用 atoi指令加上幾個if判別式應該足以應付
我的大致方法如下(非程式碼 純為概念):
if( atoi(arri[30])=0 and atoi(arri[31])=0 and atoi(arri[32])=0 and atoi(arri[33])=0)
{
for( i= 30,j=34;j<39;i++,j++)
{
arri(i)
=arri(j);//我不用中誇號改用小誇號代替 因為論壇的語法"
"昰表示斜體 會把要表達的字吃掉= =" by zx780411 2011/07/12/20:08
}
}
大致上是這樣 有問題可以私信給我討論看看 希望有幫到你^^
《 本帖最後由
zx780411
於 2011-7-12 20:08 編輯 》
歡迎光臨 SOGO論壇 (https://oursogo.com/)
Powered by OURSOGO.COM