Std :: string nesnesinde bir metin var. Metin birkaç satırdan oluşur. Metin satırını STL (veya Boost) kullanarak sıraya koymak istiyorum. Geldiğim tüm çözümler zarif olmaktan uzak görünüyor. En iyi yaklaşımım, metni satır sonlarında bölmek. Daha şık bir çözüm var mı?C++: STL ile bir std :: string satırındaki bir metnin üzerinde yineleme nasıl yapılır?
GÜNCELLEME: Bu aradığım buydu:
std::string input;
// get input ...
std::istringstream stream(input);
std::string line;
while (std::getline(stream, line)) {
std::cout << line << std::endl;
}
Ben zaten denedim düşündüm. Bir derleyici hatası aldım ve attı. Çabuk!
siz 'foreach (hatlarında dize hattı)' C# 'ın foreach gibi "daha şık" arıyorsunuz? Tam olarak ne denedin? C++, dinamik veya daha yüksek seviyeli diller için kullanılıyorsa 'inelegant' hissedebilir, ancak C++ 'zarif' asla size teslim edilmez, genellikle zerafeti kendiniz programlamanız gerekir. – Crisfole
O * oldukça * tam kopyası olmayabilir, ama aynı zamanda bakmak isteyebilirsiniz: http://stackoverflow.com/questions/1567082/how-do-i-iterate-over-cin-line-by-line -in-c –
Güncelleştirmek yerine kendi sorunuzu yanıtlamak daha iyi olurdu. Güncelleme gelecekteki okuyucu için kafa karıştırıcı olabilir ... – Wolf