我有一个问题,有一些程序员拉他们的头发。语言是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”(在尖括号中)。
谢谢!
答案 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
}