讓我有一個字符串:C++ 14名摘錄引用的字符串逐字包括引號
string tstring = "Some arbitrarily long string which has \"double quotes\" which has to be printed verbatim";
我試圖使用stringstreams並引述提取的話
stringstream stream(tstring);
string tepm;
while(stream >> std::quoted(temp))
cout << temp << endl;
但上面跳過引號引用的字符串
Some
arbitrarily
.
.
double quotes
.
.
verbatim
我想引用的字符串逐字打印,包含引號
Some
arbitrarily
.
.
"double quotes"
.
.
verbatim
我怎麼做到這一點使用引用的函數,或者如果它是不可能有一個更好的辦法做到這一點(當然從閱讀逐個字符的分開,做所有的工作我自己)
編輯:
這裏是MCVE的要求
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;
int main(){
string sspace = "Hi this is \"Real Madrid\"";
stringstream stream(sspace);
string fpart;
while(stream >> quoted(fpart)){
cout << fpart << endl;
}
return 0;
}
'std :: quoted'刪除引號。見http://en.cppreference.com/w/cpp/io/manip/quoted。 「quoted」旨在將引用的子字符串視爲單個項目,忽略空格。 –
@DavidLively我知道引用是刪除引號,因此輸出,有沒有辦法找出它是否被引用並保留引號和字符串? –
嗯..實際上,quoted'的定義似乎表示,當用於像'stream >> std :: quoted(temp)'這樣的輸入時,應該保留轉義的引號。你可以發佈一個完整的,可編譯的*短*樣本嗎? –