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++ 要优化此字符串操作程序c++;_C++_String - Fatal编程技术网

C++ 要优化此字符串操作程序c++;

C++ 要优化此字符串操作程序c++;,c++,string,C++,String,我刚刚解决了这个问题: 以下是我的解决方案: int main(无效) { 字符串s,sub; int f,e,i; while(getline(cin,s)){ f=s.在(“[”)中首先找到; 而(f

我刚刚解决了这个问题:

以下是我的解决方案:

int main(无效)
{
字符串s,sub;
int f,e,i;
while(getline(cin,s)){
f=s.在(“[”)中首先找到;
而(f对于(i=0;i如果我正确地阅读了您的问题,您需要重新考虑您的设计。不需要搜索函数,也不需要删除
substr

首先,现在不要考虑
[
]
字符。从一个空白字符串开始,然后从原始字符串中添加字符。这是加快代码速度的第一件事。一个简单的循环是你应该开始的

现在,在循环过程中,当您实际遇到这些特殊字符时,只需将输出字符串中的“插入点”更改为字符串的开头(在
[
的情况下)或字符串的结尾(在
]
的情况下)

因此,诀窍不仅是在进行过程中构建一个新字符串,而且还要将插入点更改为新字符串。最初,插入点位于字符串的末尾,但如果遇到这些特殊字符,插入点将发生变化

如果您不知道,那么您不仅可以使用
+=
+
构建字符串,还可以使用
std::string::insert
函数构建字符串

例如,您总是这样构建输出字符串:

    out.insert(out.begin() + curInsertionPoint, original_text[i]);
    curInsertionPoint++;
out
字符串是您正在构建的字符串,
original_text
是您得到的输入。
curInsertionPoint
将从0开始,如果遇到
[
]
字符,
i
只是原始字符串的循环索引


除此之外,我不会发表更多的帖子,但你应该明白了。

这个问题更适合你。你能对你自己的程序进行性能评估吗?我投票结束这个问题,因为它是关于代码审查的。
    out.insert(out.begin() + curInsertionPoint, original_text[i]);
    curInsertionPoint++;