Trong C++, cách đơn giản nhất để chuyển đổi vec-tơ int (ví dụ: vector<int>
) thành chuỗi là gì?Chuyển đổi vectơ thành chuỗi
Trả lời
lẽ std::ostream_iterator
và 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;
}
Cần lưu ý rằng 'vec.end() - 1 'chỉ được xác định rõ nếu người ta biết _for sure_ rằng' vec' là không trống. – ildjarn
@ildjarn: Điểm tốt. Tương tự cho 'vec.back()'. –
với phương pháp này, có thể ép buộc một số loại đệm? ví dụ, để có tất cả các số sử dụng 4 vị trí, bất kể số chữ số chúng có –
Đây là một sự thay thế trong đó sử dụng một iterator đầu ra tùy chỉnh. Ví dụ này hoạt động chính xác cho trường hợp danh sách trống. Ví dụ này chứng tỏ làm thế nào để tạo ra một biến lặp đầu ra tùy chỉnh, tương tự như 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";
}
Tôi thường làm điều đó theo cách này ...
#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();
}
Đây là chức năng str có thể làm cho số nguyên biến thành một chuỗi và không phải vào một char cho những gì các số nguyên đại diện. Cũng làm việc cho đôi.
Tôi đã nhầm lẫn cuộc gọi hàm tạo chuỗi của mình với một cuộc gọi đến một hàm có tên str. Druciferre sẽ không in một danh sách dấu phẩy được tách riêng, nó sẽ cố gắng biến số thành một char. – kpgbrink
Xin lỗi câu hỏi không đủ cụ thể để tôi biết chính xác những gì anh ta muốn. Tôi không đọc những bình luận khác. – kpgbrink
- 1. Chuyển đổi vectơ của uint8 thành chuỗi
- 2. Trong R: Nối các phần tử vectơ theo hàng, chuyển đổi các hàng vectơ thành chuỗi
- 3. Chuyển đổi vectơ thành ma trận logic?
- 4. OpenCV - Chuyển đổi vectơ của véc tơ thành Mat
- 5. Làm cách nào để chuyển đổi vectơ thành mảng ô?
- 6. Matlab, làm thế nào để chuyển đổi một chuỗi các số nguyên thành một vectơ?
- 7. Chuyển đổi vector R thành chuỗi vectơ của 1 phần tử
- 8. Chuyển đổi chuỗi thành System.IO.Stream
- 9. Chuyển đổi chuỗi thành Enum?
- 10. Chuyển đổi chuỗi thành BigInteger
- 11. Chuyển đổi SVGSVGElement thành Chuỗi
- 12. chuỗi chuyển đổi thành mảng
- 13. Chuyển đổi PDF thành chuỗi
- 14. Chuyển đổi JsValue thành Chuỗi
- 15. Chuyển đổi LPWSTR thành chuỗi
- 16. Chuyển đổi chuỗi thành GregorianCalendar
- 17. Chuyển đổi HtmlDocument.DomDocument thành chuỗi
- 18. Chuyển đổi chuỗi thành char
- 19. Chuyển đổi System.Array thành chuỗi []
- 20. Chuyển đổi null thành chuỗi
- 21. chuyển đổi mảng chuỗi thành chuỗi
- 22. Chuyển đổi chuỗi unicode thành chuỗi byte
- 23. Chuyển đổi NULL thành chuỗi rỗng - Chuyển đổi không thành công khi chuyển đổi từ chuỗi ký tự thành uniqueidentifier
- 24. xén xì gà vectơ thành chuỗi hoặc xẹp vectơ của ký tự thành chuỗi với các số tương ứng
- 25. Chuỗi chuyển đổi PHP thành hex và hex thành chuỗi
- 26. chuyển đổi tên biến thành chuỗi trong C++
- 27. Chuyển đổi số nguyên thành chuỗi
- 28. Javascript để chuyển đổi chuỗi thành số?
- 29. có thể chuyển đổi chuỗi thành mảng?
- 30. Python: Chuyển đổi chuỗi thành số nguyên
Một chuỗi những gì? Làm thế nào để bạn có ý định chuyển đổi mỗi số nguyên thành một chuỗi? Họ có đại diện cho mã ký tự ASCII hay bạn đang cố tạo danh sách số được phân tách bằng dấu phẩy? – meagar
Bạn muốn kết quả trông như thế nào? – Mark
Giả sử vectơ là: [1, 4, 7, 4, 9, 7], chuỗi sẽ là "1,4,7,4,9,7" – shn