在C++中,將整數的矢量(即vector<int>
)轉換爲字符串的最簡單方法是什麼?將矢量轉換爲字符串
回答
也許std::ostream_iterator
和std::ostringstream
:
#include <vector>
#include <string>
#include <algorithm>
#include <sstream>
#include <iterator>
#include <iostream>
int main()
{
std::vector<int> vec;
vec.push_back(1);
vec.push_back(4);
vec.push_back(7);
vec.push_back(4);
vec.push_back(9);
vec.push_back(7);
std::ostringstream oss;
if (!vec.empty())
{
// Convert all but the last element to avoid a trailing ","
std::copy(vec.begin(), vec.end()-1,
std::ostream_iterator<int>(oss, ","));
// Now add the last element with no delimiter
oss << vec.back();
}
std::cout << oss.str() << std::endl;
}
值得注意的是'vec.end() - 1 '只有在確實知道'vec'非空時纔有明確的定義。 – ildjarn 2011-12-20 21:10:46
@ildjarn:好點。 'vec.back()'相同。 – 2011-12-20 21:11:30
用這種方法,是否可以強制某種填充?例如,讓所有的號碼都使用4個位置,不管他們有多少位數 – 2015-12-03 05:03:10
這裏是使用定製的輸出迭代的替代方案。這個例子對於空列表來說行爲正確。此示例演示如何創建自定義輸出迭代器,類似於std::ostream_iterator
。
#include <iterator>
#include <vector>
#include <iostream>
#include <sstream>
struct CommaIterator
:
public std::iterator<std::output_iterator_tag, void, void, void, void>
{
std::ostream *os;
std::string comma;
bool first;
CommaIterator(std::ostream& os, const std::string& comma)
:
os(&os), comma(comma), first(true)
{
}
CommaIterator& operator++() { return *this; }
CommaIterator& operator++(int) { return *this; }
CommaIterator& operator*() { return *this; }
template <class T>
CommaIterator& operator=(const T& t) {
if(first)
first = false;
else
*os << comma;
*os << t;
return *this;
}
};
int main() {
// The vector to convert
std::vector<int> v(3,3);
// Convert vector to string
std::ostringstream oss;
std::copy(v.begin(), v.end(), CommaIterator(oss, ","));
std::string result = oss.str();
const char *c_result = result.c_str();
// Display the result;
std::cout << c_result << "\n";
}
我通常做這種方式...
#include <string>
#include <vector>
int main(int argc, char* argv[])
{
std::vector<char> vec;
//... do something with vec
std::string str(vec.begin(), vec.end());
//... do something with str
return 0;
}
template<typename T>
string str(T begin, T end)
{
stringstream ss;
bool first = true;
for (; begin != end; begin++)
{
if (!first)
ss << ", ";
ss << *begin;
first = false;
}
return ss.str();
}
這是STR功能,可以使整數變成一個字符串,而不是到什麼整數代表一個字符。也適用於雙打。
- 1. vhdl:將矢量轉換爲字符串
- 2. 字符串轉換爲數字矢量
- 3. 如何將矢量字符串轉換爲簡單字符串
- 4. 矢量將字符串轉換爲逗號字符串?
- 5. 字符串轉換爲矢量
- 6. 把字符串轉換爲矢量賦予空字符串
- 7. 如何將帶有字符串的矢量轉換爲數字?
- 8. 將矢量轉換爲字符串並拆分爲JSP的字符串
- 9. 將字符串轉換爲Java中的矢量
- 10. 將字符串轉換爲配對矢量?
- 11. 將字符串數組轉換爲矢量的最佳方法?
- 12. 如何將字符串矢量轉換爲標題案例
- 13. 將矢量<int>轉換爲字符串
- 14. 如何在Matlab中將矢量轉換爲字符串
- 15. 將矢量轉換爲c中的字符串
- 16. 將elisp事件字符串/矢量轉換爲EVENT對象
- 17. Matlab,如何將整數字符串轉換爲矢量?
- 18. 如何將字符串轉換爲矢量
- 19. C++將矢量項目轉換爲單個字符串錯誤?
- 20. 將Java矢量元素轉換爲字符串
- 21. 將字符串[]轉換爲矢量<String>
- 22. 將字符串矢量轉換爲分配聲明的右值
- 23. 如何將矢量轉換爲java中的字符串?
- 24. 將uint8的矢量轉換爲字符串
- 25. 如何將字符串轉換矢量字符數組
- 26. 將1D矢量轉換爲2D矢量
- 27. 將矢量<char>轉換爲帶有轉換的字符串
- 28. 將數字矢量轉換爲其他數字矢量
- 29. c#將字符串轉換爲變量
- 30. 將字符串轉換爲變量
一串什麼?你打算如何將每個整數轉換爲字符串?他們代表ASCII字符代碼,還是你想要建立一個以逗號分隔的數字列表? – meagar 2011-12-20 20:56:23
你想要輸出看起來像什麼? – Mark 2011-12-20 20:56:36
說向量是:[1,4,7,4,9,7],字符串將是「1,4,7,4,9,7」 – shn 2011-12-20 20:59:23