C++ str.insert()不';行不通
我正在尝试搜索字符串并插入双引号。我正在搜索字符串以查找分隔符,并尝试在分隔符之前或之后插入“\”(无所谓) 程序可以编译,但到达此函数时会冻结。编译时不会给我任何错误 我做错了什么C++ str.insert()不';行不通,c++,string,insert,C++,String,Insert,我正在尝试搜索字符串并插入双引号。我正在搜索字符串以查找分隔符,并尝试在分隔符之前或之后插入“\”(无所谓) 程序可以编译,但到达此函数时会冻结。编译时不会给我任何错误 我做错了什么 string text="This|is|the|text"; string Quote="|"; void Insert() { size_t i=0; string insert="\""; while ((i = text.find(Quote, i)) !=string::npos)
string text="This|is|the|text";
string Quote="|";
void Insert()
{
size_t i=0;
string insert="\"";
while ((i = text.find(Quote, i)) !=string::npos)
{
text.insert(i,insert);
}
}
考虑一下这里发生了什么。你在
i
位置找到一个“|”
,然后在i
位置插入一个字符,然后从i
位置继续搜索。下一个“|”现在在哪里?考虑一下这里发生了什么。你在i
位置找到一个“
”
,然后插入t在i
位置找到一个字符,然后从i
位置继续搜索。下一个'.
现在在哪里?想想这里发生了什么。在i
位置找到一个'.
,然后在i
位置插入一个字符,然后从i
位置继续搜索。在哪里下一个'.
现在是吗?想想这里发生了什么。你在i
位置找到一个'.
,然后在i
位置插入一个字符,然后从i
位置继续搜索。下一个'.
现在在哪里?否,str insert()
有效。您的代码无效。始终假定错误在您的代码中,而不是在标准库中。我不是说,STL中有错误,我是说我的str.insert代码无法正常工作。不,str.insert()
有效。您的代码无效。始终假定错误在您的代码中,而不是在标准库中。我不是说,STL中有错误,我是说我的str.insert代码无法正常工作。不,str.insert()
有效。您的代码无效。始终假定错误在您的代码中,而不是在标准库中。我不是说,STL中有错误,我是说我的str.insert代码无法正常工作。不,str.insert()
有效。您的代码无效。始终假定错误在您的代码中,而不是在标准库中。我不是说,STL中有错误,我是说我使用str.insert的代码无法正常工作。可能值得指出的是,在这种情况下,通常最好创建字符串的新实例,复制并修改字符串你可以去,而不是试图修改字符串。在惯用的C++中,你会使用迭代器,它可能被任何插入无效,甚至有索引,在插入或删除时保持索引的位置非常复杂。创建一个新的字符串实例,复制和修改你的位置,而不是试图修改字符串。在习惯用法C++中,你会使用迭代器,它可能被任何插入无效,即使有索引,在插入或删除时保持索引的位置非常复杂。在这样的情况下,通常最好是创建一个新的字符串实例,如您所述的复制和修改,而不是试图修改字符串。在惯用的C++中,您将使用迭代器,迭代器可能被任何插入无效,甚至使用索引,将索引保持在W的位置也会非常复杂。当你插入或删除时,很有可能指出,在这种情况下,通常最好先创建一个新的字符串实例,如你所做的那样复制和修改,而不是试图修改字符串。在惯用的C++中,你会使用迭代器,迭代器可能被任何插入无效,即使有索引,也可以是E。在插入或删除索引时,将索引保留在其所属位置非常复杂。