Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ str.insert()不';行不通_C++_String_Insert - Fatal编程技术网

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。在插入或删除索引时,将索引保留在其所属位置非常复杂。