我寫這個軟件使我在網站上的工作變得更容易一些。我只是寫了一個腳本,它會突出顯示我的跨代碼。它到達那裏,但我有一個問題。 (我目前正致力於突出UnityC#)C++ - 用雙引號將字符串替換爲帶雙引號的字符串
我想字符串是黃色的,包括雙引號,但現在我嘗試它的方式導致無限循環。我知道我在引號中做錯了什麼,但我無法弄清楚這是什麼。請幫我:)
變量原來由std::string original ((istreambuf_iterator<char>(currentFile)), istreambuf_iterator<char>());
,其中currentFile
是腳本我
std::size_t pos = 0;
while(original.find("\"", pos) != std::string::npos)
{
//find the first occurrence of the quote
std::size_t found = original.find("\"", pos);
if(found != std::string::npos)
{
//save the start position of the string
std::size_t start_pos = found;
//save the end position by searching for the next quotation mark
std::size_t end_pos = original.find_first_of("\"", start_pos+1);
//Calculate the size of the string
std::size_t length = end_pos-start_pos;
//Make a copy of the word without the quotation marks
std::string originalWord = original.substr(start_pos+1, length-1);
//Make the new word with span, original word(without the quotation marks) and add quotation marks around the word
std::string newWord = std::string("<span class='yellow_code'>") + "\"" + originalWord + "\"" + "</span>";
std::cout<<originalWord<<" : "<<newWord<<std::endl;
//Replace the string WITH the quotation marks for the newWord
original.replace(start_pos, length+1, newWord);
//Set the position to after the string
pos = end_pos+1;
}
else
{
pos = found+1;
}
}
加載當我運行它,它會創建清點:/dataValues.dat:<跨度類= 'yellow_code'>「/dataValues.dat」</span >無限。
出了什麼問題?
問候, 達尼
如果你允許使用C++ 11,可以考慮使用'的std :: regex'。它會很容易地爲你做到這一點。 –
我的老教授堅持把他們稱爲「引號人物」。引用是動詞,而不是名詞;-) – Bathsheba
你能給我們一個例子嗎? – Shravan40