Tôi có một chuỗi có phần cuối cùng (hậu tố) cần được thay đổi nhiều lần và tôi cần tạo các chuỗi mới. Tôi đang cố gắng sử dụng ostringstream để làm điều này như tôi nghĩ, bằng cách sử dụng dòng sẽ nhanh hơn so với chuỗi nối. Nhưng khi hậu tố trước đó lớn hơn hậu tố trước, nó sẽ bị rối tung lên. Dòng suối cũng tắt các ký tự null.Tại sao dải ostringstream NULL?
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
ostringstream os;
streampos pos;
os << "Hello ";
pos = os.tellp();
os << "Universe";
os.seekp(pos);
cout<< os.str() << endl;
os << "World\0";
cout<< os.str().c_str() << endl;
return 0;
}
Output
Hello Universe
Hello Worldrse
Nhưng tôi muốn Hello World
. Làm thế nào để tôi làm điều này? Có cách nào khác để làm điều này một cách nhanh hơn?
Chỉnh sửa: Gắn thêm std::ends
hoạt động. Nhưng tự hỏi nó hoạt động như thế nào trong nội bộ. Cũng giống như để biết nếu có những cách nhanh hơn để làm như vậy.
Không như vậy chắc chắn rằng stringstream sẽ là hiệu quả nhất - bạn nên xem xét một trong những biến thể của 'std :: string: : replace() ' – Nim