我正在接收一個浮點數值類似於-157.571的緩衝區91.223 -165.118 -59.975 0.953 0 0.474 0 0 0.953 0 0.474 0.474 0 5.361 0 0 0.474 0 5.361 ...但它們是以字符形式的......現在我想檢索一個接一個的值,並把它放在一個變量中...任何一個都可以幫助我...我使用了memcpy,但沒有使用..如果我複製8個字節,其取值爲-157.571和8個值包括' - '和'。' ....是否有任何解決方案..使用linux進行C++編程
回答
如果我理解正確,你有一個存儲在某種類型的字符串中的值,你想從中檢索浮點值。如果是這種情況,則取決於您使用的語言。如果您使用C++,則應使用std::istringstream
執行轉換。如果您使用C(和/或來自C++的cstdio
系統而不是iostream
),則應該使用sscanf
。如果您使用的是C#,則應該使用Double.TryParse
。
我已經使用sscanf但沒有用...你可以發送一個簡單的例子..在C++ – bindu 2010-11-26 06:02:10
您有一個字符串,其中包含許多由空格分隔的浮點值。
如果您可以使用strtof()
將它們一次一個地轉換爲float
值。
float strtof(const char *nptr, char **endptr);
where
將包含指向已轉換的最後一個字符的指針,因此可用於遍歷字符串。nptr
是您希望轉換的字符串,而endptr
是指向字符指針的指針。 endptr
例如。
char *rawString; char **walkPtr; float convertedValue; /* do something to collect the next series of floats */ /* and now do the conversions */ *walkPtr = rawString; while(still_some_string_to_process) { convertedValue = strtof(*walkPtr, walkPtr); // increment the pointer to skip over the delimiting space *walkPtr++; }
相應的錯誤檢查應適用,以確保你不跑的字符串的結束,等
比方說,你的花車的緩衝區是這個字符串:
"-157.571 91.223 -165.118 -59.975 0.953 0 0.474 0 0 0.953 0 0.474 0.474 0 5.361 0 0 0.474 0 5.361"
您的乾淨的C++方法是本加載到std::istringstream
,然後使用該流來提取浮子個值..即
std::istringstream str(buffer);
現在你可以使用流中的操作人員提取浮點值,並重復這一點,直到沒有更多的(提示:檢查流標誌)
str >> {float}; // then do something with {float}
可選您可以將此提取的值推送到std::vector
以爲您提供字符串中的浮點數。我沒有寫出完整的代碼,只是僞給你一個想法...
- 1. 在Ubuntu中使用C/C++進行編程linux
- 2. 使用C#進行並行編程
- 3. C編程:使用pthreads進行調試
- 4. 關於使用C++進行Windows編程
- 5. 使用fork進行C語言編程()
- 6. 使用C#進行Android編程#
- 7. 使用eclipse進行C編程
- 8. 使用Eclipse進行C編程?
- 9. 使用linux命令行進行FTDI eeprom編程
- 10. 如何編譯C++在Linux上進行,以使Windows二進制
- 11. 在linux上使用C++進行arping
- 12. 使用http進行C編程的Socket編程post
- 13. USB編程:C/Linux
- 14. 在Ubuntu Linux上使用Kinect進行編程
- 15. 從servlet使用Runtime.exec運行linux進程()
- 16. 使用c#.net進行遠程桌面連接從windows到linux使用c#.net
- 17. linux c/C++編程支持設置進程優先級嗎?
- 18. 在Linux上的串行編程C
- 19. 編譯C++程序在Linux上運行
- 20. 用Eclipse進行C編程(庫之謎)
- 21. 使用gcc進行c編程的編譯錯誤64位
- 22. 在Arduino上使用contikiOS進行C或C++編程
- 23. 在Mac上使用C或C++進行GUI編程入門
- 24. 在LINUX上使用C++進行LAPACK/LAPACKE ---編譯,鏈接和運行?
- 25. 如何在Linux上以編程方式殺死進程樹使用C
- 26. 使用C中的多線程進行串口編程
- 27. 使用工具進行並行編程
- 28. Python - 使用PyQt進行線程編程
- 29. 使用c/C++編寫共享庫的Linux C程序
- 30. C++ Linux監視進程sigsegv
C++或C#?這個問題沒有道理。 – 2010-11-26 05:59:03
有人很可怕,非常困惑。 – 2010-11-26 05:59:34