0

数人のプログラマーが髪を引っ張っているという問題があります。言語は C/C++ です。以下のコードを検討してください... requestが有効な C++ 文字列であると仮定します。

string outMsg;
string trans_str = ("</TRANSACTION>");
int32_t position;

//Assign outMsg and find "</TRANSACTION>"
outMsg.assign(request);
position = outMsg.rfind(trans_str);

rfind(trans_str) でプログラムがクラッシュします。find(...) および replace(...) を使用すると、プログラムもクラッシュします。ほとんどの C++ メソッドで問題があるようです。プログラムは、次のような行でもクラッシュします....

cout << "This is a string " << variable << "and this is the end"; //this is an example

通常、プログラムは 3 番目の "<<" でクラッシュし、この例では次の出力のみを出力します。

「これは文字列 {変数} です」 クラッシュ。

ここで多くの奇妙なことが起こっています。

「文字列」(山括弧内) が含まれます。

ありがとうございました!

4

1 に答える 1

2

あなたのコードスニペットは非常に不完全ですが、意味があると思われるもので空白を埋めると、問題なく動作します.....

#include <iostream>
#include <string>

int main()
{
    std::string outMsg;
    std::string trans_str = ("</TRANSACTION>");
    int32_t position;

    std::string request = "abcdefg</TRANSACTION>hijklmnop";

    //Assign outMsg and find "</TRANSACTION>"
    outMsg.assign(request);
    position = outMsg.rfind(trans_str);

    std::string variable = outMsg.substr(position, outMsg.size()-position);

    std::cout << "This is a string\n" << variable << "\nand this is the end\n"; //this is an example
}
于 2012-06-29T18:53:33.500 に答える