C++中是否有函數將所有數據類型(double
,int
, short
等)轉換爲string
?數據類型轉換
Q
數據類型轉換
3
A
回答
7
通常,您將使用<<
運算符,並結合(例如)std :: stringstream。
2
沒有內置的通用功能,但boost::lexical_cast<>會這樣做。
4
+0
+1,即使代碼示例總是歡迎 – 2010-07-21 06:58:55
3
如果提升不是一個選項(這應該始終,但以防萬一):
#include <sstream>
#include <string>
template<class T1, class T2>
T1 lexical_cast(const T2& value)
{
std::stringstream stream;
T1 retval;
stream << value;
stream >> retval;
return retval;
}
template<class T>
std::string to_str(const T& value)
{
return lexical_cast<std::string>(value);
}
加速也有類似的想法,但執行效率要高得多。
1
爲什麼你需要這種轉換?很多語言都具有自動轉換的變體類型,並且這可能導致想要C++中的行爲,即使可能有更具規範的實現方式。
例如,如果你想要做輸出,使用某種類型的(字符串)流可能是要走的路。如果您確實需要生成並處理字符串,則可以使用boost::lexical_cast
http://www.boost.org/doc/libs/1_43_0/libs/conversion/lexical_cast.htm。
1
這是我從我的實用程序庫中使用的一個。這是從其他帖子濃縮在這裏stackoverflow,我不是聲稱這是我自己的原始代碼。
#include <string>
#include <sstream>
using namespace std;
template <class T>
string ToString(const T& Value) {
stringstream ss;
ss << Value;
string s = ss.str();
return s;
}
此外,另一個便利的字符串格式化工具使用:
#include <string>
#include <stdarg.h> /* we need va_list */
// Usage: string myString = FormatString("%s %d", "My Number =", num);
string FormatString(const char *fmt, ...) {
string retStr;
if (NULL != fmt) {
va_list marker = NULL;
va_start(marker, fmt);
size_t len = 256 + 1; // hard size set to 256
vector <char> buffer(len, '\0');
if (vsnprintf(&buffer[0], buffer.size(), fmt, marker) > 0) {
retStr = &buffer[0]; // Copy vector contents to the string
}
va_end(marker);
}
return retStr;
}
0
對於這種使用stringstream的。 首先將頭文件包含爲#include。 然後創建一個stringstream對象並使用流插入操作符(< <)將要轉換的內容作爲字符串傳遞。 例如:
#include <iostream>
#include <sstream>
int main(){
std::string name = "Ram";
float salary = 400.56;
std::stringstream obj;
obj << name << " salary: " << salary;
std::string s = obj.str();
std::cout << s;
}
相關問題
- 1. SSIS數據類型轉換
- 2. C數據類型轉換
- 3. 轉換數據類型
- 4. 轉換數據類型
- 5. Java數據類型轉換
- 6. 數據類型轉換
- 7. Postgres數據類型轉換
- 8. Postgres數據類型轉換
- 9. SQL轉換數據類型
- 10. 類型數據轉換
- 11. MSSQL數據類型轉換
- 12. XML數據類型轉換
- 13. Flex數據類型轉換
- 14. 類型轉換,從DB數據類型的Java數據類型
- 15. C++ Uint8數據類型轉換爲const char *數據類型
- 16. MATLAB:從char數據類型轉換爲符號數據類型
- 17. 將MySQL Decimal數據類型類型轉換爲c#float數據類型
- 18. 在熊貓中轉換數據類型
- 19. 工會轉換數據類型錯誤
- 20. 錯誤轉換數據類型
- 21. 更改列類型和數據轉換
- 22. 轉換任何數據類型的NSString
- 23. 數據類型轉換錯誤
- 24. 數據類型轉換爲Mysql或python
- 25. 轉換SQL XML數據類型表
- 26. Python Pandas轉換列數據類型
- 27. 熊貓數據類型轉換問題
- 28. 轉換數據類型的方法
- 29. Golang gorm時間數據類型轉換
- 30. 轉換的SortedMap數據類型
雖然沒有一個確切的重複,在這個問題的答案提供的常用方法轉換內置類型爲字符串:http://stackoverflow.com/questions/228005/alternative-to-itoa -for-converting-integer-to-string-c – 2010-07-20 18:13:05
[sprintf](http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/) – 2010-07-20 18:13:42
@Kirill'sprintf' is C. There are better,type C++中的安全選擇。 – 2010-07-20 18:17:46