2016-04-12 28 views
3

std::string değerinden bazı verileri ayrıştırmak için std::stringstream kullanıyorum.
Bu kod:Dize akışından veri sorma (C++)

std::string str = "data1 data2 data3 \"quotated data\""; 
std::stringstream ss(str); 

Ben ss >> anotherStr; kullanırsanız ben bir boşlukla ayrılmış her bir kelimeyi olsun.
Tek tırnak değeri olarak tırnak içinde veri okumak için stringstream sormak için bir seçenek var mı anlamıyorum?

cevap

9

std::quoted io manipülatör tam olarak ihtiyacınız olan şeydir.

burada kullanışlı bir referans: http://en.cppreference.com/w/cpp/io/manip/quoted

ve çalışan bir örneği:

#include <iostream> 
#include <sstream> 
#include <iomanip> 


int main() 
{ 
    using namespace std; 
    std::string str = "data1 data2 data3 \"quotated data\""; 
    std::stringstream ss(str); 

    std::string s; 
    while (ss >> std::quoted(s)) 
    { 
     std::cout << s << std::endl; 
    } 

    return 0; 
} 

beklenen çıktı:

data1 
data2 
data3 
quotated data 
+2

Upticked !. Bu sitede her gün yeni bir şeyler öğreniyorum. Sen de dostum Richard. – WhozCraig

+1

Arigatou gozaimasu! – Aero