中断的循环C++
Interrupted For Loop C++
我有这个代码
#include <iostream>
#include <string>
using namespace std;
int main() {
string text, findstring, replacestring;
int i = -1;
cout << "Text eingeben: ";
getline( cin, text );
cout << "findstring: ";
cin >> findstring;
cout << "replacestring: ";
cin >> replacestring;
if( text.find( findstring, 0 ) == -1 ) {
cout << "Fehler: findString ist nicht vorhanden" << endl;
return 1;
}
cout << endl;
for (i; i>text.length();++i) {
i = text.find( findstring, i+1 );
cout << "String " << findstring << " gefunden an Pos: " << i << endl;
text.replace( i, findstring.length(), replacestring );
}
cout << "Ergebnis: " << text << endl;
cout << text.length();
return 0;
}
它在另一个字符串中搜索一个字符串并返回其位置并用另一个字符串替换它。现在我的问题是,当目标字符串多次包含在原始字符串中时,为什么这不起作用? 我尝试使用...而循环,它工作得很好。 我想知道如何使用 for 循环执行此操作。
这有点棘手。该错误是由于将i
与text.length()
进行比较引起的。 i
是一个值为-1
的int,而text.length()
是一个unsigned type
,因此-1 is always > text.length()
。这就是为什么您的for loop
只运行一次(当i
仍然-1
时(。
这是一种可能的修复方法(在我的机器上运行良好(:
#include <iostream>
#include <string>
using namespace std;
int main() {
string text, findstring, replacestring;
int i = -1;
cout << "Text eingeben: ";
getline(cin, text);
cout << "findstring: ";
cin >> findstring;
cout << "replacestring: ";
cin >> replacestring;
if( text.find( findstring, 0 ) == -1 ) {
cout << "Fehler: findString ist nicht vorhanden" << endl;
return 1;
}
cout << endl;
do {
i = text.find(findstring, i + 1);
if (i == -1) {
cout << "No more result found" << endl;
break;
} else {
cout << "String " << findstring << " gefunden an Pos: " << i << endl;
text.replace(i, findstring.length(), replacestring);
}
} while (true);
cout << "Ergebnis: " << text << endl;
cout << text.length() << endl;
return 0;
}
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 为什么在这个代码结束循环中没有得到结束
- 在基于范围的for循环中使用结构化绑定声明
- 用于C++中带有数组和指针的循环
- 循环中的随机函数
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 在循环C++中指定字符串之后,不会打印该字符串