私はこのソフトウェアを作成しています。私はちょうどスクリプトを入れて、スパンで私のコードを強調表示します。そこに着いていますが、私には問題があります。 (私は現在UnityC#のハイライトに取り組んでいます)C++ - 文字列を二重引用符で囲んだ文字列に置き換えます。
二重引用符を含めて文字列を黄色にしたいのですが、私が今試している方法では無限ループが発生します。私は引用符で間違って何かをしていることを知っているが、私はそれが何であるか把握することはできません。私を助けてください:)
変数元は私が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;
}
}
にロードするスクリプト私はこれを実行すると、それはCOUTますですcurrentFile
std::string original ((istreambuf_iterator<char>(currentFile)), istreambuf_iterator<char>());
、によって作成された
:/dataValues.dat:<スパンクラス= 'yellow_code' > "/dataValues.dat" </span >無限大です。
どうしたのですか?
よろしく、 ダニ
を試してみてください。これはあなたのためにこれを非常に簡単に行います。 –
私の古い教授は、「引用文字」と呼ばれることを主張していました。見積もりは動詞で、名詞ではありません;-) – Bathsheba
あなたに例を挙げてもらえますか? – Shravan40