rfind和<<崩溃的程序

时间:2012-06-29 18:20:13

标签: c++

我有一个问题,有一些程序员拉他们的头发。语言是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

程序通常在第三个“&lt;&lt;”上崩溃并且只会在此示例中打印以下输出:

“这是一个字符串{variable}”CRASH。

这里发生了很多奇怪的事情。

包含

“string”(在尖括号中)。

谢谢!

1 个答案:

答案 0 :(得分: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
}