2012-07-30 16 views
73

मैं निम्नलिखित कोड मिल गया है अलग करने के लिए stringstream उपयोग कैसे करें:, GHIअल्पविराम से अलग तार

तो

एबीसी
डीईएफ़:

std::string str = "abc def,ghi"; 
std::stringstream ss(str); 

string token; 

while (ss >> token) 
{ 
    printf("%s\n", token.c_str()); 
} 

उत्पादन होता है stringstream::>> ऑपरेटर अंतरिक्ष द्वारा स्ट्रिंग को अलग कर सकता है लेकिन अल्पविराम से नहीं। क्या उपर्युक्त कोड को संशोधित करने के लिए वैसे भी है ताकि मैं निम्नलिखित परिणाम प्राप्त कर सकूं?

इनपुट: "abc, डीईएफ़, GHI"

उत्पादन:
एबीसी
डीईएफ़
GHI

+3

(http://stackoverflow.com/questions/236129/splitting- [C++ में एक स्ट्रिंग में बांट दें] ए-स्ट्रिंग-इन-सी) सी ++ – pmr

उत्तर

172
#include <iostream> 
#include <sstream> 

std::string input = "abc,def,ghi"; 
std::istringstream ss(input); 
std::string token; 

while(std::getline(ss, token, ',')) { 
    std::cout << token << '\n'; 
} 

एबीसी +०१२३८००७३१६ डीईएफ़
GHI

-1

हो सकता है कि इस कोड को मदद मिलेगी:

stringstream ss(str);//str can be any string  
int integer; 
char ch; 
while(ss >> a) 
{ 
    ss>>ch; //flush the ',' 
    cout<< integer <<endl; 
}  
+2

में स्प्लिटिन स्ट्रिंग्स के बारे में मानव को पता होना चाहिए सब कुछ शामिल है इनपुट स्ट्रिंग एक अल्पविराम से अलग स्ट्रिंग है, अल्पविराम से अलग पूर्णांक नहीं है। एसएस >> ए' में, एक भी घोषित नहीं किया गया है .. – yoneal

+0

पूर्णांक कभी परिभाषित नहीं किया गया है ... – cujo

0
#include <iostream> 
#include <string> 
#include <sstream> 
using namespace std; 
int main() 
{ 
    std::string input = "abc,def, ghi"; 
    std::istringstream ss(input); 
    std::string token; 
    size_t pos=-1; 
    while(ss>>token) { 
     while ((pos=token.rfind(',')) != std::string::npos) { 
     token.erase(pos, 1); 
     } 
     std::cout << token << '\n'; 
    } 
} 
+2

"* एक आदमी को एक मछली दें और आप उसे एक दिन के लिए खिलाओ; एक आदमी को मछली को सिखाओ और आप उसे एक के लिए खिलाओ जीवन काल*"। – Mistalis

संबंधित मुद्दे